Shell
僅在未註釋行中的 Grep 字元串
如何 grep 僅在未註釋行中的字元串?我不希望結果包含在註釋行中的字元串中。例如:在 file.tx
My name is Jane #My name is Sara
我想 grep 單詞“name”並列印輸出,如下所示: -
My name is Jane
但我不希望顯示註釋行。
謝謝
如果要列印文件中未註釋掉的行,那麼下面的命令會派上用場。
grep -v '^ *#' filename.txt | grep searchstring
-v -> Inverse
-v “^ *#” -> 列印起始行中沒有“#”的行(#ABC - 也避免使用此行)
它已經為我工作了很長時間,我用它來顯示活動的 crontab 作業。
沒有更多細節是不可能給出完美答案的。您可以按照以下方式執行:
remove the comments (and maybe literal strings) | grep in the output
刪除註釋(多行與否)可能很棘手……我們至少需要一個特定於語言的詞法分析器來正確處理它。
無論如何,我們可以編寫一個快速的 hack(不是那麼健壯)按照一個帶有 C 註釋的範例:
perl -0pe 's!/\*.*?\*/!!gs' x.c | grep searchstring