GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Nehmen Sie die erste Spalte aus 2 Dateien und schreiben Sie sie in eine 3. Datei?

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 paste und cut :

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

    Wenn 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.txt
    

    Die spezielle Variable FNR ist die Zeilennummer der aktuellen Eingabedatei und NR ist 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 im a gespeichert 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.


Linux
  1. Finden Sie Dateien und Verzeichnisse unter Linux mit dem Befehl find

  2. Lesen und schreiben Sie Daten von überall mit Umleitung im Linux-Terminal

  3. So teilen und kombinieren Sie Dateien von der Befehlszeile in Linux

  4. Lesen und schreiben Sie in dieselbe Datei unter Linux, ohne sie zu überschreiben?

  5. Dateiinhalt ohne die erste und letzte Zeile drucken?

Herunterladen von Dateien mit Wget auf der Linux-Shell - Erklärung und Beispiele

Verhindern Sie, dass Dateien und Ordner unter Linux versehentlich gelöscht oder geändert werden

Linux-Dateiverwaltung über das Terminal

In .txt-Datei schreiben?

Wie lösche ich die erste Spalte (die eigentlich Zeilennamen sind) aus einer Datendatei in Linux?

Wie kann man eine Datei komprimieren und die .gz-Datei behalten?