如何在给定范围内“grep”行长*不*?

Lou*_*e79 17 grep text-processing regular-expression

注意:这个问题是这个问答的补充:如何在给定范围内“grep”行长?


我们如何对少于 8 个或多于 63 个字符的行进行 grep,没有包含多于 8 个且少于 63 个字符的行?

因此,一些可接受的字符数可能是......

7 6 5 4 3 2 1 0
Run Code Online (Sandbox Code Playgroud)

...和...

64 65 66 67 ...
Run Code Online (Sandbox Code Playgroud)

mik*_*erv 38

grep -xv '.\{8,63\}' <input >output
Run Code Online (Sandbox Code Playgroud)

grep-xswitch 表示整行匹配——也就是说,任何匹配的模式都必须定义一条从头到尾的行。正在做...

grep -x pattern
Run Code Online (Sandbox Code Playgroud)

...通常相当于...

grep ^pattern$
Run Code Online (Sandbox Code Playgroud)

grep-v开关否定模式对行选择的影响。一般在做...

grep pattern
Run Code Online (Sandbox Code Playgroud)

...将只选择与模式匹配的行,但使用-v否定模式只选择那些匹配的行。

...所以...

grep -xv '.\{8,63\}'
Run Code Online (Sandbox Code Playgroud)

...匹配从头到尾包含 8 到 63 个字符的所有行,并且-v否定选择grep仅导致打印其他所有内容。