2017-08-08 123 views
-1

我試圖grep一個文件中的模式。如果它在該文件中被註釋,我想跳過模式發生。 例如,該模式有2次出現,但輸出應該是1次出現。基本上,它應該跳過註釋行 能否請您提出一個方法爲這個grep命令跳過註釋行

+1

有很多種類的評論 - '/ * * /'或''或'#'或'//'......也許你可以指定你的評論想過濾掉。 –

+0

我在.pl文件中執行這個grep。我正在使用#和= head .. = cut for commenting – Sanchu

回答

1

一種簡單,常用的方式剝去外殼的意見是:

egrep -v '^\s*#' <file> 

這裏,egrepgrep用正則表達式模式作爲輸入。模式'^ \ s#'描述了以'#'開頭的行,或者任何數量的空白後跟'#'的行。選項-v反轉匹配(不匹配的線路通過)。然後,您可以管道進行進一步的模式搜索。

注意:代碼後出現的註釋(例如echo 'foo' # bar)不會被剝離。這種管道解決方案無法做到這一點。

0

您可以在grep中使用選項-F。 -F表示固定的字符串。比如我有一個具有以下數據的文件:

System out of memory 
#System out of memory 
System out of memory #1 
1 #System out of memory 

現在與-F

grep -rF "#System out of memory" <path to grep> 

輸出

./file1:#System out of memory 
./file1:1 #System out of memory 

這是基本的意識形態的grep。根據你的模式,它必須被修改

+0

我試過了,但是如果只搜索系統內存不足,它將不會跳過註釋行..對吧?系統內存不足 #系統內存不足 系統內存不足#1 1#系統內存不足# – Sanchu