Shell

僅在未註釋行中的 Grep 字元串

  • November 30, 2018

如何 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

引用自:https://unix.stackexchange.com/questions/484614