我有以下格式的文件。
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
如果所有行的值都为零,我应该收到类似“所有值都为零”的邮件警报。
GNU sed的代码:
$sed '/\S+\s+[0]+\b/d' 文件 表名值 学生 50 动物 20 $sed -r '/\S+\s+([1-9]|[0]+[1-9])/!d' 文件 学生 50 动物 20
这可以工作:
$ awk '$2' file
Table_name Value
student 50
animals 20
如果第二个字段不是0
,则条件被评估为 true - 请注意,这{print $0}
是默认块,awk
因此如果这是您要执行的唯一操作,则可以省略它。
关于邮件警报,我认为您最好显示一些代码以获得参考点。
以下 awk 应该满足您的两个要求:
awk 'NR>1 && $2 {nz=1;print}; END{if (!nz) print "all zeroes, send email"}' file
print "all zeroes, send email"
为您的邮件发送命令。为什么不 perl:
perl -ane 'print if($.!=1 && $F[1]!=0)' your_file
用awk很简单,
awk -F " " '{if($2 > 0) print $0}' your_file