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

Kopfzeile in jede Zelle ihrer Zeile kopieren?

Ich habe eine Datei:

AC  AF  AN
3   0.375   8
3   0.375   8

Ich möchte die Ausgabe als:

AC  AF  AN
AC=3    AF=0.375    AN=8
AC=3    AF=0.375    AN=8

Gibt es dafür einen Unix-Befehl?

Akzeptierte Antwort:

awk '
  NR==1 {split($0,a); $1=$1} 
  NR>1 {for(i=1;i<=NF;i++) $i=a[i]"="$i} 
  1' OFS='t' yourfile

Erklärung:

  • teilt den ersten Datensatz (Kopfzeile) in ein Array auf, basierend auf dem standardmäßigen Feldtrenner; weisen Sie $1 neu zu damit der Datensatz mit dem neuen Ausgabefeld-Trennzeichen geschrieben wird
  • Für die verbleibenden Datensätze durchlaufen Sie die Felder, indem Sie jedem Feldwert das Array-Element voranstellen, das dem Feldindex entspricht, getrennt durch =
  • Datensätze mit Tabulator als Ausgabefeldtrenner drucken

Linux
  1. cp:Befehl nicht gefunden

  2. Wie sortiere ich eine Datei basierend auf ihren numerischen Werten für ein Feld?

  3. CentOS:Verzeichnis in ein anderes Verzeichnis kopieren

  4. Wie komprimiert man mehrere Ordner, jeden in ein eigenes Zip-Archiv?

  5. firefox:Farbe des Eingabefeldes

Kopieren von Dateien unter Linux

Cp-Befehl in Linux (Dateien kopieren)

Linux-Kernel und seine Funktionen

So kopieren Sie das Verzeichnis unter Linux

cp-Befehl unter Linux/UNIX

cut- oder awk-Befehl, um das erste Feld der ersten Zeile zu drucken