2014-05-13 65 views
1

我正在研究一個從bash文件中提取註釋並將它們輸出到新文件的程序。Grep表達式不包含我想要的一些匹配

我需要忽略#中的''或'「引用,我認爲我已經做得正確。

grep -oe "[^\'\"\\]#[^\'\"].*" somefile >> somecomments 

這提取了一些文本正確的註釋,例如,

echo Sum: $Sum # Displays the sum 

將被轉換爲「#在輸出文件中顯示總和」。 問題在於,由於某些原因,以#開始的行現在被排除,例如,

# Name 
# Date 

根本不會顯示在輸出文件中。

我該如何解決我的表達問題,以便我仍然可以排除#前面的引號,但是會提取以#開頭的行?

+1

你不會得到這個工作。註釋以'#'開頭,但'#'也可能是'code'的一部分。你需要一個大的異常列表,可以說這個'#'是代碼的一部分,忽略。 – Jotne

+0

[Unix/Linux,Delete lines from lines]的可能重複(http://stackoverflow.com/questions/23601260/unix-linux-delete-comments-from-lines) – Jotne

回答

0

檢查以下幾項工作對您:

grep -oe "[^\'\"\\]#[^\'\"].*" -e "^#.*" somefile >> somecomments 

但作爲評論的一個說,你將不得不採取許多例外的照顧。

如果有一種像

echo '<space> ########### Following code does this #########<space>'

聲明你有權採取記住所有那些機會。

相關問題