smb.conf
,仅看到未注释的行。#1 楼
grep "^[^#;]" smb.conf
第一个
^
指的是该行的开头,因此带有第一个字符后的注释行不会被排除。 [^#;]
表示不是#
或;
的任何字符。换句话说,它报告以
#
和;
以外的任何字符开头的行。它与报告不是以#
和;
开头的行(您将使用grep -v '^[#;]'
)不同,因为它还排除了空行,但是在这种情况下这可能是更好的选择,因为我怀疑您关心空行。 如果要忽略开头的空白字符,可以将其更改为:
grep '^[[:blank:]]*[^[:blank:]#;]' smb.conf
或
grep -vxE '[[:blank:]]*([#;].*)?' smb.conf
或
awk ' ~ /^[^;#]/' smb.conf
评论
正确的答案是:cat /etc/samba/smb.conf | grep ^ [^#\;]但是还是谢谢你
–否认
13年1月11日在20:09
是的,或者您可以使用“引号”;我随后对其进行了编辑。
–金锁
13年1月11日在20:11
@denys你错了:goldilocks的反应并不比你差。 .1请避免使用猫... |句法!。 .2对于鞭打空行和仅包含空格的行,也许可以使用注释U使用:grep -v“ ^ * \(#。* \ | \)$”
– F. Hauri
13年1月11日在20:14
@EmanuelBerg这是没用的叉子。猫文件| grep“ blah”表示通过fifo运行两个二进制文件,而grep“ blah”
– F. Hauri
2013年1月11日在22:01
它做的并不完全相同。它创建2个进程和1个进程就足够的管道。阅读@ F.Hauri的最新评论中给出的链接。
– rahmu
2013年1月11日在22:12
#2 楼
Vim解决方案::v/^\s*[#\n]/p
我自己尝试找到vim解决方案时偶然发现了这个问题。
评论
这也将删除以空格开头的行。
– Kusalananda♦
19年6月7日14:57
真正。我发现这对于配置文件很有用,因为注释之间的线会填满输出。如果您希望保留空白行,则将*更改为+,如下所示:v / ^ \ s + [#\ n] / p
–大卫·洛德(David Lord)
19年6月8日在23:27
#3 楼
可以通过(假设GNUgrep
或兼容的)消除通过Oliver nadj的答案到grep的管道:评论
第二个grep i @ nadj看起来没用,@ goldilocks的回答远远不够。
–炼金术士
2015年10月13日在9:19
我同意goldilocks的回答是正确的。但是,我也认为不显示空行很有用。
– Morten Lind
2015年10月13日在17:41
#4 楼
这些例子可能对人们有用。[user@host tmp]$ cat whitespacetest
# Line 1 is a comment with hash symbol as first char
# Line 2 is a comment with hash symbol as second char
# Line 3 is a comment with hash symbol as third char
# Line 4 is a comment with tab first, then hash
; Line 5 is a comment with tab first, then semicolon. Comment char is ;
; Line 6 is a comment with semicolon symbol as first char
[user@host tmp]$
第一个grep示例不包括以任意数量的空格开头,后跟哈希符号的行。
[user@host tmp]$ grep -v '^[[:space:]]*#' whitespacetest
; Line 5 is a comment with tab first, then semicolon. Comment char is ;
; Line 6 is a comment with semicolon symbol as first char
[user@host tmp]$
第二个不包括以任意空格开头的行,后跟一个哈希符号或分号。
[user@host tmp]$ grep -v '^[[:space:]]*[#;]' whitespacetest
[user@host tmp]$
#5 楼
grep -v "^\s*[#;]" any.conf | grep -v "^\s*$"
那对我有用。忽略注释的行或空行,甚至在井号或分号前留空格
#6 楼
在这里,我得到了更好的结果(假设使用GNUgrep
或兼容的):用于空白行。评论
在哪种类型的conf文件中,<或/用于注释?我知道很多conf文件格式,其中<是注释以外的所有内容。 !有时像在X资源文件中一样使用。
–StéphaneChazelas
17 Mar 16 '17 at 10:42
#7 楼
grep -v '^$\|^\s*#' temp
这个要好得多,我从https://stackoverflow.com/questions/17392869/how-to-print-a-file-exception-comments-and-blank-lines获得-using-grep-sed
假定GNU
grep
或兼容。评论
该问题还考虑了以开头的行;作为应删除的注释。
– Kusalananda♦
19年6月7日14:56
#8 楼
egrep -v "^#|^$" anyfile.txt
此命令用于grep文件中的所有信息,不包括注释和空白行。
评论
注意smb.conf也用;注释。
– Jeff Schaller♦
19年7月11日在18:41
#9 楼
这应该显示的文件没有以#
开头的行:grep -v "^#" filename
评论
这对以;开头的行不起作用。
– Kusalananda♦
19年6月7日14:56
评论
testparm可以更好地执行此操作,因为它也显示默认值。@ F.Hauri谢谢。它也在工作。但这也会产生一些不需要的信息(在我的情况下),也应将其删除...
超集:任何正则表达式:superuser.com/questions/655715/regex-does-not-begin-by-pattern
通过PCRE grep的另一种方式stackoverflow.com/a/45917459/3297613