grepは「#print」の代わりに「print」を探します。

grepは「#print」の代わりに「print」を探します。

デバッグ時に「print」を多く使用し、「#print」としてコメントアウトします。 grepを使用して「印刷」の前に「#」のない行を見つけるにはどうすればよいですか?

# print <- not detect
#print <- not detect
abc # print <-- not detect
print <- detect

答え1

grep '^[^#]*print'

print前には#以外の文字だけが来ることができます。

答え2

クラシックソリューション:

grep -v '^#' <input |grep 'print'

答え3

最も簡単な方法は、おそらく2つのgrepパイプを一緒に使用することです。

$ grep 'print' <input | grep -v '#[[:space:]]*print'

input例を含むファイルを使用すると、次のようになります。

print <- detect

これはすべての例に適用されます。これだけで十分かもしれませんが、私とmanatworkがコメントで指摘したようにgrep

答え4

まだ学んでいますが、ffも動作しますか?

grep -v '#[ ]*print' input_file

関連情報