コメントされていない行でのみ文字列を検索する

コメントされていない行でのみ文字列を検索する

コメントアウトされていない行でのみ文字列を検索するには?コメント化された行の文字列に結果が含まれたくありません。例: file.tx

My name is Jane
#My name is Sara

「name」という単語をgrepして、次のように出力を印刷したいと思います。

My name is Jane

しかし、コメント行が表示されたくありません。

ありがとう

答え1

詳細なしに完璧な答えを出すことは不可能です。次のように実行できます。

remove the comments (and maybe literal strings)   | 
grep in the output

コメントを削除するのは難しいかもしれません。これを適切に処理するには、少なくとも言語固有の語彙アナライザが必要です。

とにかく、私たちは速いハッキング(それほど強力ではない)を書くことができます。以下はCコメントを含む例です。

   perl -0pe 's!/\*.*?\*/!!gs' x.c   | grep searchstring

答え2

ファイルからコメントアウトされていない行を印刷する場合は、次のコマンドが便利です。

grep -v '^ *#' filename.txt  | grep searchstring

-v -> reverse
-v "^ *#" ->開始行に "#"なしで行を印刷します(#ABC - この行も避けます)

それは長い間私のために働いており、アクティブなcrontabタスクを表示するために使用されています。

答え3

次のように動作します(コメント行が記号で始まると仮定します#)。

grep -v '^#' myfile.txt | grep string_to_search

#コメント行を表す記号(C、、、cまたはたとえば)に置き換えることができますdD*!

関連情報