使用awk命令获得所需的输出

时间:2017-05-14 08:10:55

标签: bash awk

以下是我的要求。

我的输入文件(test.csv):

col1 col2 col3 col4
a b c d
e f g h
.
.

预期产出:

col1:a
col2:b
col3:c
col4:d
col1:e
col2:f
col3:g
col4:h
.
.

我没有太多关于awk编程的经验,在代码下面使用过。但结果并不像预期的那样。有人可以帮忙吗。

awk { for (i=1; i<=NF;i++) print $i ":"} test.csv

1 个答案:

答案 0 :(得分:3)

awk 解决方案:

awk '{if(NR==1){ split($0, a) }else{ for(i=1;i<=NF;i++) print a[i]":"$i }}' test.csv

输出:

col1:a
col2:b
col3:c
col4:d
col1:e
col2:f
col3:g
col4:h

NR==1 - 第一条记录

split($0, a) - 将第一条记录拆分为一系列列名,以便a[1]分配col1a[2]填充col2,等......

for(i=1;i<=NF;i++) print a[i]":"$i - 根据相应的索引i

打印列名和列值