echo "Main1,one,two,three,four" |awk '{ split($1,a,",");for (i in a) print i,")",a[i]; }'
实际输出:
2)一个
3)两个
4)三
5)四
1)Main1
预期产量:
1)Main1
2)一个
3)两个
4)三
5)四个
我尝试了以下命令并错过了最后一个值:
echo "Main1,one,two,three,four" |awk '{ split($1,a,",");for (i in a) print i-1,"\b)",a[i-1]; }'
输出:
1)Main1
2)一个
3)两个
4)三
0)
无法找到最后一个打印第一个值的原因。
答案 0 :(得分:4)
我建议:
echo "Main1,one,two,three,four" |awk -F ',' '{ for(i=1; i<=NF; i++) print i")",$i }'
输出:
1) Main1 2) one 3) two 4) three 5) four
答案 1 :(得分:3)
默认情况下,未定义'for(indx in array)'循环扫描数组的顺序;它通常基于awk内部数组的内部实现。来源:https://www.gnu.org/software/gawk/manual/html_node/Controlling-Array-Traversal.html
如果要按索引升序处理数组,请使用:
n=split($1,a,",")
# maybe an if(n) here
for(i=1;i<=n;i++)
print i,")",a[i]