Text-Processing
基於單個列值合併多行
我有一個這樣的輸入文件:
3 1 10 1 6 9 4 2 4 1 9 2 2 2 1
我想根據第 5 列值合併兩行,輸出如下所示:
3 1 10 1 6 9 4 2 4 9 2 2 2 1
誰能解釋一下?
謝謝
使用 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
使用 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
嘗試使用以下命令,它工作正常
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"