Grep不带-v选项的非内联注释行

Grep不带-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所有none
#
注释行

虽然我可以使用
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