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í
pasteacut:$ paste -d ' ' <(cut -d' ' -f 1 ABC.txt ) <(cut -d' ' -f 1 PQR.txt ) > output.txt ABC PQRPokud 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.txtSpeciální proměnná
FNRje číslo řádku aktuálního vstupního souboru aNRje čí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ží doapole (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.