我有以下格式的文件。通过一列中的匹配模式从文本文件中选择行
Table_name Value
Employee 0
student 50
Payroll 0
animals 20
我需要获取值为非零的整个行。
预期产出将是
student 50
animals 20
如果该值是零的所有行,我应该得到邮件提示,如“所有值都为零”。
我有以下格式的文件。通过一列中的匹配模式从文本文件中选择行
Table_name Value
Employee 0
student 50
Payroll 0
animals 20
我需要获取值为非零的整个行。
预期产出将是
student 50
animals 20
如果该值是零的所有行,我应该得到邮件提示,如“所有值都为零”。
为什么不使用Perl:
perl -ane 'print if($.!=1 && $F[1]!=0)' your_file
继AWK应同时满足您的要求:
awk 'NR>1 && $2 {nz=1;print}; END{if (!nz) print "all zeroes, send email"}' file
print "all zeroes, send email"
。太棒了!非常感谢:) – Vignesh
很简单使用awk,
awk -F " " '{if($2 > 0) print $0}' your_file
这很好,但请注意,您正在使用一些已在默认设置下的选项:'-F“”','print $ 0'。 – fedorqui
代码GNU sed:
$sed '/\S+\s+[0]+\b/d' file Table_name Value student 50 animals 20 $sed -r '/\S+\s+([1-9]|[0]+[1-9])/!d' file student 50 animals 20
我只有Unix环境 – Vignesh
Perl是标准Unix环境的一部分。 –