我想grep所有没有#
评论行,
虽然我可以使用grep -v -E '^\s*#'
,但我想知道是否有其他方法不使用-v(恢复)选项。
#a comment line from a tab
abcd
xx
#a comment line from head
#a comment line from a space
我尝试了很多模式但失败了:
grep -E '^\s*[^#]'
grep -E '^[ \t]*[^#]'
答案 0 :(得分:1)
尝试:
$ grep -E '^\s*[^#[:space:]]' hashfile
abcd
xx
由于空格不是#
,因此正则表达式^\s*[^#]
将以零或多个空格后跟一个空格开头的任何行。
如果需要,我们可以明确地使用空格和制表符:
$ grep -E '^\s*[^# \t]' hashfile
abcd
xx
\s
是grep
的GNU扩展。在扩展正则表达式(-E
)中,[:space:]
是包含空格字符的字符类。对于便携式解决方案,请使用:
$ grep -E '^[[:space:]]*[^#[:space:]]' hashfile
abcd
xx