コメントアウトされていない行でのみ文字列を検索するには?コメント化された行の文字列に結果が含まれたくありません。例: 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
またはたとえば)に置き換えることができますd
。D
*
!