如何在输出字符串中显示以0开头的列和总和值?AWK

如何在输出字符串中显示以0开头的列和总和值?AWK,awk,Awk,有一个包含3列的文件。若第一列数为0,则显示每个字符串的第二个和第三个数字之和 1,2,3 3,4,5 0,1,2 0,0,7 结果: 3 7 我正在尝试此操作,但由于某些原因,结果收到两个0: awk '$1 ~ /^0/ {print $2 + $3}' zadanie.csv 由于文件是逗号分隔的,所以需要提供输入字段分隔符的awk值,在本例中为逗号 awk -F, '$1 ~/^0/ {print $2+$3}' foo 3 7 如果你想考虑第一个数字为零的情况(而不是像03或0

有一个包含3列的文件。若第一列数为0,则显示每个字符串的第二个和第三个数字之和

1,2,3
3,4,5
0,1,2
0,0,7
结果:

3
7
我正在尝试此操作,但由于某些原因,结果收到两个0:

awk '$1 ~ /^0/ {print $2 + $3}' zadanie.csv

由于文件是逗号分隔的,所以需要提供输入字段分隔符的awk值,在本例中为逗号

awk -F, '$1 ~/^0/ {print $2+$3}' foo
3
7

如果你想考虑第一个数字为零的情况(而不是像03或05的情况那样从零开始),那么试试这个——

awk -F "," '$1==0 {print $2+$3}' file

这将只匹配第一个数字等于零的列。

缺少快速回答的分隔符和行。有没有办法在这个脚本中使用正则表达式?在你的解决方案中有一个问题。如果第一列中有第10行,脚本将认为它实际上是0,它将在下一个动作中包含该字符串是错误的。@ ZNZZUS,它不会认为10是真的。在这里,awk搜索的是以0开头的行,而不是包含零的行。所以它会起作用。第一个字段以0开头,但不等于0,您可能需要更新。@soFan如果是这样,那么您的答案已经很完美了。让我偷偷地扩展一下我的范围。
awk'{if($1==0)print$2+$3}'
可以简化为更惯用的形式,比如
awk'$1==0{print$2+$3}'
甚至
awk'$1{print$2+$3}'
@fedorqui,更简洁,谢谢!我会记住的。编辑了答案。