使用awk更新CSV文件中的值

时间:2015-09-16 20:10:59

标签: bash csv awk

我有一个CSV文件,我需要使用awk命令编写脚本,我需要一些帮助。 对于每个奇数列(第一个除外),如果value等于0,那么左边的值也需要为零。

输入:

1,1,0,1,1,1,0
2,3,4,0,3,2,1
3,3,0,3,5,7,6
3,6,6,7,0,8,4

输出:

1,0,0,1,1,0,0
2,3,4,0,3,2,1
3,0,0,3,5,7,6
3,6,6,0,0,8,4

有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

这个awk命令应该可以工作:

awk 'BEGIN{FS=OFS=","} {for (i=3; i<=NF; i+=2) if ($i==0) $(i-1)=0} 1' file
1,0,0,1,1,0,0
2,3,4,0,3,2,1
3,0,0,3,5,7,6
3,6,6,0,0,8,4

for (i=3; i<=NF; i+=2)将从字段#3开始迭代奇数字段列表,如果当前为0,则将前一字段设置为0