以下是我的要求。
我的输入文件(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
答案 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]
分配col1
,a[2]
填充col2
,等......
for(i=1;i<=NF;i++) print a[i]":"$i
- 根据相应的索引i