我有一个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
有人可以帮我解决这个问题吗?
答案 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
。