输入由两行1-2指定的标识符
L1_I L1_I C-14 <---| unique idenfier
WWPTH WWPT WWPTH <---| on two rows
1 2 3
目标:如何串联行?
L1_IWWPTH L1_IWWPT C-14WWPTH <--- unique identifier
1 2 3
附:我将接受最简单,最优雅的解决方案.
解决方法:
假设输入在名为file的文件中:
$awk 'NR==1{for (i=1;i<=NF;i++) a[i]=$i;next} NR==2{for (i=1;i<=NF;i++) printf "%-20s",a[i] $i;print"";next} 1' file
L1_IWWPTH L1_IWWPT C-14WWPTH
1 2 3
这个怎么运作
> NR == 1 {对于(i = 1; i <= NF; i)a [i] = $i; next}
对于第一行,将所有列标题保存在数组a中.然后,跳过其余命令,并跳至下一行.
> NR == 2 {对于(i = 1; i <= NF; i)printf“%-20s”,a [i] $i; print“”; next}
对于第二行,打印所有列标题,将第一行和第二行中的标题合并在一起.然后,跳过其余命令,并跳至下一行.
> 1
1是awk照原样打印行的隐喻速记.在几秒钟后对所有行执行此操作.
制表符分隔的列,可能缺少列
如果列用制表符分隔:
awk -F'\t' 'NR==1{for (i=1;i<=NF;i++) a[i]=$i;next} NR==2{for (i=1;i<=NF;i++) printf "%s\t",a[i] $i;print"";next} 1' file