我正在尝试编写一个正则表达式(e)grep
命令,该命令将打印txt文件中的所有行,但忽略那些以空格开头的行(手动缩进文件)。我无法弄清楚如何使用行^
的开头并将^
排除在一起。谢谢!
答案 0 :(得分:2)
执行此操作的好方法是使用negated character class。
与[abc]
匹配a
,b
或c
非常相似,[^abc]
将匹配任何非a
的字符,{ {1}}或b
。 c
将正则表达式锚定在行的开头,因此它后面的内容必须匹配字符串的第一个字符。
^
如果我们想跳过以空格开头的行,包括制表符,您可以在字符类中使用特殊的$ 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