用 0 0 0 0 搜索所有字符串

search all strings with 0 0 0 0

我有输出

Gi2/21              0          0          0          0    833603        0 
Gi5/1               0          0          0         53         0     5538
Gi6/1               0          0          2          2         0        0 
Gi6/2               0          0          0          0         0        0

Gi3/1               0          0          0          0
Gi2/2               0          0          0          0 

什么正则表达式可以过滤所有包含 0 0 0 0 0 0 或 0 0 0 0 的字符串?

如果要查找具有多个由空格分隔的连续零的行,可以在 Perl 正则表达式选项 -P.

下使用 grep 和以下正则表达式
grep -P '0\s+0\s+0\s+0' Input.txt

要反转匹配并过滤掉这种性质的行,只需使用 grep -v

grep -P -v '0\s+0\s+0\s+0' Input.txt

没有 Perl 正则表达式标志,您需要转义 +.

grep '0\s\+0\s\+0\s\+0' Input.txt

鉴于您的输入示例,您可以使用 awk

如果您想要 非零线:

awk '{sum=0;for(i=2;i<=NF;i++){sum+=$i} if (sum){ print [=10=]}}' file

如果您不想非零线:

awk '{sum=0;for(i=2;i<=NF;i++){sum+=$i} if (sum==0){ print [=11=]}}' file

这将适用于第一个之后的任意数量的数字字段。

您也可以这样使用sed

如果您只需要 0 个字段:

sed -n -E '/^[[:alnum:]\/]+[0[:blank:]]+$/p' file

如果您只需要非零字段,则取消该匹配:

sed -n -E '/^[[:alnum:]\/]+[0[:blank:]]+$/!p' file

这也适用于 grep:

grep -E '^[[:alnum:]\/]+[0[:blank:]]+$' file

或:

grep -E -v '^[[:alnum:]\/]+[0[:blank:]]+$' file

grep '0\s\+0\s\+0\s\+0'效果不错