【问题标题】:bash check if all rows into files are equal to "number"bash检查文件中的所有行是否等于“数字”
【发布时间】:2020-07-17 18:23:59
【问题描述】:

我有一个文件,其中包含一些由另一个程序动态填充的数字(每行一个),如下所示:

0
0
234
455
0

当文件中的所有行都等于零 (0) 时,我应该创建一个简单的回显,我已经创建了这个脚本,但是它不能正常工作:

if ! grep -x -q "0" "file";
then
echo "At least one row is not zero"
else
echo "All rows are zero"
fi

【问题讨论】:

  • 欢迎来到 Stack Overflow。请edit该问题添加对“无法正常工作”含义的解释。它是否以错误消息响应?它会让你的耳朵变绿吗?它产生什么输出?

标签: linux bash grep


【解决方案1】:

使用grep -v 搜索任何与模式匹配的行。

if grep -q -v -x 0 filename
then echo At least one row is not zero
else echo All rows are zero
fi

【讨论】:

    【解决方案2】:

    使用awk,您可以在遇到非零时立即终止。如果文件很大,可能很重要。

    $ awk '$0!=0 {exit 1}' file
    

    使用退出状态

    $ if awk '$0!=0 {exit 1}' file; then echo "all zeros"; else echo "nonzero"; fi
    

    【讨论】:

    • grep -q 也这样做。
    • 是的,除了q(uiet),我想也意味着q(uick exit)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 2012-08-26
    • 2021-03-08
    相关资源
    最近更新 更多