如何显示空白或包含这些字符的行数

Joh*_*cen 1 command-line bash

我必须计算包含逗号、撇号或完全空白行的行数。

我知道计算我会做的空行数 egrep -xc '' filename

但我不太确定如何一次完成所有操作,以获取带有撇号和逗号的行以及空行。

gni*_*urf 5

看来你今天在做功课...

一个办法:

grep -c "\([',]\|^$\)" filename
Run Code Online (Sandbox Code Playgroud)

如果您还想通过空行包含仅包含空格的内容:

grep -c "\([',]\|^[[:space:]]*$\)" filename
Run Code Online (Sandbox Code Playgroud)

撇号的技巧是使用双引号,否则'''会出错。该构造\( regexp1 \| regexp2 \)将匹配与regexp1或匹配的所有行regexp2。正则表达式[',]匹配所有包含引号'或逗号的行,

在这里,您需要转义括号()和管道,|否则grep 会尝试查找这些字符,并且不要将它们视为正则表达式构造。如果您不喜欢转义这些,您可以直接使用-E开关(用于扩展正则表达式)或egrep

grep -cE "([',]|^$)" filename
Run Code Online (Sandbox Code Playgroud)

或者

egrep -c "([',]|^$)" filename
Run Code Online (Sandbox Code Playgroud)

在您的 OP 中,您提到了-x开关。它适用于获取空行...但不适用于您的昏迷/报价要求。所以为了匹配我正在使用的空行^$^是行首$的锚点,是行尾的锚点)。

希望这可以帮助。