「#」または「;」で始まらない行を見つける方法は?

「#」または「;」で始まらない行を見つける方法は?

smb.confgrepでコメントされていない行だけを見たいです。

答え1

grep "^[^#;]" smb.conf

最初は^行の始まりを意味するので、最初の文字の後にコメントで始まる行は除外されません。または以外のすべての文字を[^#;]表します。#;

つまり、および以外の文字で始まる#行を報告します;#;使用する)で始まらないレポートラインとは異なりますgrep -v '^[#;]'いいですね。しかし、この場合は空行に興味があるかどうか疑わしいので、おそらくより良い選択肢でしょう。

先行する空白文字を無視するには、次のように変更できます。

grep '^[[:blank:]]*[^[:blank:]#;]' smb.conf

または

grep -vxE '[[:blank:]]*([#;].*)?' smb.conf

または

awk '$1 ~ /^[^;#]/' smb.conf

答え2

Wimソリューション:

: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*$"

これは私にとって効果的です。コメントや空白行を無視し、ハッシュマークやセミコロンの前のスペースも無視します。

関連情報