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

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

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

我知道要计算空白行的数量egrep -xc '' filename

但我不太清楚如何一次性完成所有操作,同时还获得带有撇号和逗号的行以及空行。

答案1

看来你今天正在做作业……

一个办法:

grep -c "\([',]\|^$\)" filename

如果空行您还希望包括那些仅包含空格的内容:

grep -c "\([',]\|^[[:space:]]*$\)" filename

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

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

grep -cE "([',]|^$)" filename

或者

egrep -c "([',]|^$)" filename

在您的 OP 中,您提到了-x开关。它可以用于获取空行……但不能满足您的逗号/引号要求。因此,为了匹配空白行,我使用了^$(^是行首的锚点,$是行尾的锚点)。

希望这可以帮助。

相关内容