Angenommen, ich habe 2 Dateien, ABC.txt &PQR.txt mit den unten gezeigten Daten als Beispiel:
ABC.txt:
ABC DEF
PQR.txt:
PQR XYZ
Ich möchte grep Spalte 1 aus beiden Dateien und schreibe in eine dritte Textdatei. Wie kann das gemacht werden?
Meine erwartete Ausgabe ist (output.txt):
ABC PQR
Akzeptierte Antwort:
Hier sind ein paar Möglichkeiten:
-
Mit
pasteundcut:$ paste -d ' ' <(cut -d' ' -f 1 ABC.txt ) <(cut -d' ' -f 1 PQR.txt ) > output.txt ABC PQRWenn Ihr System keine Prozesssubstitution unterstützt, verwenden Sie stattdessen Folgendes:
$ cut -d' ' -f 1 ABC.txt > /tmp/aa; cut -d' ' -f 1 PQR.txt > /tmp/bb; paste -d ' ' /tmp/aa /tmp/bb -
Mit
awk(danke @Costas):awk 'FNR==NR{a[FNR]=$1; next}{print a[FNR],$1}' ABC.txt PQR.txt > output.txtDie spezielle Variable
FNRist die Zeilennummer der aktuellen Eingabedatei undNRist die Zeilennummer der Eingabe im Allgemeinen, unabhängig von der Datei, aus der sie stammt. Die beiden sind nur gleich, während die erste Eingabedatei gelesen wird. Die ersten Felder der ersten Datei werden also imagespeichert Array (a[FNR]=$1), deren Schlüssel Zeilennummern und deren Werte die 1. Felder sind. Dann, wenn die zweite Datei erreicht ist, geben wir den Wert aus, der ihrer Zeilennummer entspricht (a[NR]) und das 1. Feld der aktuellen Zeile.