我必须计算包含逗号、撇号或完全空白行的行数。
我知道要计算空白行的数量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
开关。它可以用于获取空行……但不能满足您的逗号/引号要求。因此,为了匹配空白行,我使用了^$
(^
是行首的锚点,$
是行尾的锚点)。
希望这可以帮助。