从egrep打印输出中排除以空格开头的行

时间:2016-02-13 19:54:23

标签: regex unix grep

我正在尝试编写一个正则表达式(e)grep命令,该命令将打印txt文件中的所有行,但忽略那些以空格开头的行(手动缩进文件)。我无法弄清楚如何使用行^的开头并将^排除在一起。谢谢!

2 个答案:

答案 0 :(得分:2)

执行此操作的好方法是使用negated character class

[abc]匹配abc非常相似,[^abc]将匹配任何非a的字符,{ {1}}或bc将正则表达式锚定在行的开头,因此它后面的内容必须匹配字符串的第一个字符。

^

如果我们想跳过以空格开头的行,包括制表符,您可以在字符类中使用特殊的$ cat test does not start with space starts with space starts with more spaces another good line $ egrep '^[^ ]' test does not start with space another good line 括号表达式:

[:space:]

如果你没有在线上寻找其他东西,你也可以使用倒置匹配

 egrep '^[^[:space:]]' test

所以我们可以这样做:

 -v, --invert-match
         Selected lines are those not matching any of the specified pat-
         terns.

egrep -v '^[[:space:]]' test 也应该这样做:

grep

答案 1 :(得分:1)

您可以使用-v开关跳过匹配的行。

egrep -v '^ '

请参阅man egrep