我想 grepsmb.conf
并只查看未注释的行。
答案1
grep "^[^#;]" smb.conf
第一个指^
的是行的开头,因此不会排除在第一个字符之后开始注释的行。 [^#;]
表示不是#
或 的任何字符;
。
换句话说,它报告以 和 之外的任何字符开头的#
行;
。它与报告不以#
and开头的行;
(您将使用)不同,grep -v '^[#;]'
因为它还排除空的行,但在这种情况下这可能是更好的选择,因为我怀疑你关心空行。
如果您想忽略前导空白字符,可以将其更改为:
grep '^[[:blank:]]*[^[:blank:]#;]' smb.conf
或者
grep -vxE '[[:blank:]]*([#;].*)?' smb.conf
或者
awk '$1 ~ /^[^;#]/' smb.conf
答案2
维姆解决方案:
:v/^\s*[#\n]/p
我在尝试自己寻找 vim 解决方案时偶然发现了这个问题。
答案3
oliver nadj 的答案中的 grep 管道可以通过以下方式消除(假设 GNUgrep
或兼容):
grep -v "^\s*[#\;]\|^\s*$" <some_conf_file>
答案4
grep -v "^\s*[#;]" any.conf | grep -v "^\s*$"
这对我有用。忽略注释或空行,甚至哈希标记或分号之前的空格