相关疑难解决方法(0)

使用 grep 计算出现的总次数

grep -c对于查找字符串在文件中出现的次数很有用,但它每行只计算每次出现一次。如何计算每行出现的多次?

我正在寻找比以下更优雅的东西:

perl -e '$_ = <>; print scalar ( () = m/needle/g ), "\n"'
Run Code Online (Sandbox Code Playgroud)

grep

313
推荐指数
3
解决办法
82万
查看次数

awk:强制返回状态?

这是我之前的问题的后续。

我正在使用这个方便的代码段验证 /etc/passwd 中的字段数。在以下示例中,用户“fieldcount1”和“fieldcount2”的字段数错误:

$ awk -F: ' NF!=7 {print}' /etc/passwd
fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash::::
fieldcount2:blah::blah:1002:100:fieldcount2:/home/fieldcount2:/bin/bash:
$ echo $?
0
Run Code Online (Sandbox Code Playgroud)

您会注意到,awk 将退出,返回状态为 0。从它的角度来看,这里没有问题。

我想将此 awk 语句合并到一个 shell 脚本中。我想打印所有错误的行,并将返回码设置为 1(错误)。

我可以尝试强制特定的退出状态,但是 awk 只打印一行:

$ awk -F: ' NF!=7 {print ; exit 1}' /etc/passwd
fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash::::
$ echo $?
1
Run Code Online (Sandbox Code Playgroud)

我可以强制 awk 以“1”的返回状态退出,并打印所有匹配的行吗?

awk shell-script text-processing

20
推荐指数
2
解决办法
2万
查看次数

标签 统计

awk ×1

grep ×1

shell-script ×1

text-processing ×1