
Ich habe eine Eingabedatei wie diese:
3 1 10 1 6
9 4 2 4 1
9 2 2 2 1
Ich möchte zwei Zeilen basierend auf dem Wert der 5. Spalte zusammenführen. Die Ausgabe würde folgendermaßen aussehen:
3 1 10 1 6
9 4 2 4 9 2 2 2 1
Kann das jemand erklären?
Danke
Antwort1
Mit Perl:
$ perl -lane 'push @{$vals{$F[4]}}, @F[0..3];
END { $, = " "; for $v (sort keys %vals) { print @{$vals{$v}}, $v } }' input.txt
9 4 2 4 9 2 2 2 1
3 1 10 1 6
Mit awk:
$ awk '{vals[$5] = vals[$5] $1 " " $2 " " $3 " " $4 " "}
END { for (v in vals) print vals[v] v }' input.txt
9 4 2 4 9 2 2 2 1
3 1 10 1 6
Antwort2
Habe es mit dem Below-Befehl versucht und es hat gut funktioniert
awk 'NR<3{$5="";print $0}' filename > o1
o=`awk 'NR==1{print $NF}' filename`
awk 'NR==3{print $0}' filename| sed '1i '$o'' > o2
paste o1 o2| sed -r "s/\s+/ /g"