2017-06-29 37 views
0

內容包含從文件中讀取的字符串。我想要做的是用組和換行符替換捕獲組。但我不知道如何。BASH:使用sed替換字符串中的組

這工作

contents=$(echo $contents | sed -e 's|/$(#.*)\n||g') 

但這並不

contents=$(echo $contents | sed -e 's|/$(#.*)\n|\1\n|g') 
ERROR: sed: -e expression #1, char 18: invalid reference \1 on `s' command's RHS 

而且也沒有這個

contents=$(echo $contents | sed -er 's|/$(#.*)\n|\1\n|g') 
ERROR: sed: can't read s|/$(#.*)\n|\1\n|g: No such file or directory 
+0

請提供示例輸入和所需輸出。 – dawg

+0

'$'被視爲特殊的「行尾」字符?在這種情況下,什麼都沒有匹配......你需要逃避角色。 –

回答

0

如果內容爲多$content必須是雙引號,以避免分裂之間: $在正則表達式中有一個特殊的含義nchor,必須逃脫。小組括號必須轉義(-r擴展正則表達式除外)。 \n也不匹配$可以用來代替。

content=$(echo "$content"|sed -e 's|/\$\(#.*\)$|\1|g') 
+0

這幫助了很多!謝謝。 – aarelovich