Grep不带-v选项的非内联注释行
我想grep所有noneGrep不带-v选项的非内联注释行,grep,Grep,我想grep所有none#注释行 虽然我可以使用grep-v-E'^\s*#',但我想知道是否还有其他方法不使用-v(revert)选项 我尝试了许多模式,但都失败了: grep -E '^\s*[^#]' grep -E '^[ \t]*[^#]' 尝试: 讨论 由于空格不是#,因此正则表达式^\s*[^#]将显示以零个或多个空格开头,后跟一个空格的任何行 如果需要,我们可以明确使用空白和选项卡: $ grep -E '^\s*[^# \t]' hashfile abcd xx
#
注释行
虽然我可以使用grep-v-E'^\s*#'
,但我想知道是否还有其他方法不使用-v(revert)选项
我尝试了许多模式,但都失败了:
grep -E '^\s*[^#]'
grep -E '^[ \t]*[^#]'
尝试:
讨论
由于空格不是#
,因此正则表达式^\s*[^#]
将显示以零个或多个空格开头,后跟一个空格的任何行
如果需要,我们可以明确使用空白和选项卡:
$ grep -E '^\s*[^# \t]' hashfile
abcd
xx
兼容性
\s
是对grep
的GNU扩展。在扩展正则表达式(-E
)中,[:space://code>是包含空格字符的字符类。对于便携式解决方案,请使用:
$ grep -E '^[[:space:]]*[^#[:space:]]' hashfile
abcd
xx
非常感谢。这是一个早已存在的问题。有时grep不能像js regexp那样工作,似乎\s*或“^[:space:][]*”没有按预期进行积极匹配。
$ grep -E '^\s*[^# \t]' hashfile
abcd
xx
$ grep -E '^[[:space:]]*[^#[:space:]]' hashfile
abcd
xx