GNU/Linux >> Znalost Linux >  >> Linux

Vzít první sloupec ze 2 souborů a zapsat ho do třetího souboru?

Předpokládejme, že mám 2 soubory, ABC.txt &PQR.txt s údaji uvedenými níže jako příklad:

ABC.txt:

ABC DEF

PQR.txt:

PQR XYZ

Chci grep sloupec 1 z obou souborů a zapište do třetího textového souboru. Jak to lze provést?

Můj očekávaný výstup je (output.txt):

ABC PQR

Přijatá odpověď:

Zde je několik způsobů:

  • Pomocí paste a cut :

    $ paste -d ' ' <(cut -d' ' -f 1 ABC.txt ) <(cut -d' ' -f 1 PQR.txt ) > output.txt
    ABC PQR
    

    Pokud váš systém nepodporuje substituci procesů, použijte místo toho toto:

    $ cut -d' ' -f 1 ABC.txt > /tmp/aa; cut -d' ' -f 1 PQR.txt > /tmp/bb; paste -d ' ' /tmp/aa /tmp/bb
    
  • Pomocí awk (díky @Costas):

    awk 'FNR==NR{a[FNR]=$1; next}{print a[FNR],$1}' ABC.txt PQR.txt > output.txt
    

    Speciální proměnná FNR je číslo řádku aktuálního vstupního souboru a NR je číslo řádku vstupu obecně, bez ohledu na soubor, ze kterého pochází. Tyto dva jsou stejné pouze při čtení prvního vstupního souboru. První pole prvního souboru se tedy uloží do a pole (a[FNR]=$1 ), jehož klíče jsou čísla řádků a jejichž hodnoty jsou 1. pole. Poté, když je dosaženo druhého souboru, vytiskneme hodnotu odpovídající jeho číslu řádku (a[NR] ) a 1. pole aktuálního řádku.


Linux
  1. Najděte soubory a adresáře v Linuxu pomocí příkazu find

  2. Jak rozdělit a kombinovat soubory z příkazového řádku v Linuxu

  3. Vytisknout obsah souboru bez prvního a posledního řádku?

  1. Lum – nahradit běžné hodnoty ve dvou souborech podle prvního sloupce?

  2. Jak rozdělit soubor a zachovat první řádek v každém z kusů?

  3. Jak odstranit řádky, které se objevují v souboru B, z jiného souboru A?

  1. Zkopírujte soubory v terminálu Linux

  2. Přejmenujte soubor v terminálu Linux

  3. Vezměte n-tý sloupec v textovém souboru