如何“grep”查找给定范围内*不*的行长度?

如何“grep”查找给定范围内*不*的行长度?

笔记:这个问题是对这个问答的补充:如何“grep”给定范围内的行长度?


我们如何 grep 查找少于 8 个或多于 63 个字符的行,而不包含多于 8 个且少于 63 个字符的行?

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

7 6 5 4 3 2 1 0

...和...

64 65 66 67 ...

答案1

grep -xv '.\{8,63\}' <input >output

grep-x开关表示全线match - 也就是说任何匹配的模式都必须定义从头到尾的一条线。正在做...

grep -x pattern

...一般相当于...

grep ^pattern$

grep-v开关消除了模式对行选择的影响。一般是做...

grep pattern

...只会选择与模式匹配的行,但带有-v否定模式,仅选择那些与模式匹配的行匹配被选中。

...所以...

grep -xv '.\{8,63\}'

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

相关内容