我需要在包含在$http_proxy
env var中的URL(http://localhost:3128
)後面添加單個文件的從PATTERN
開始的所有行的末尾。在文件的某些行末尾添加包含在env var中的URL
$ sed "/^PATTERN/ s/.*/& test/" somefile
它工作的很好,但只要我$http_proxy
取代test
,sed的會抱怨,因爲//
它裏面的:
$ sed "/^PATTERN/ s/.*/& $http_proxy/" somefile
sed: -e expression #1, char 25: unknown option to `s'
所以我試圖用#
作爲分隔符(如建議例如here),但sed
沒有任何影響,如果模式突然不匹配:
$ sed "#^PATTERN# s#.*#& $http_proxy#" somefile
有什麼想法?
逃逸'\#'(第一'#'),或使用標準'/'這個範圍(和#'PATTERN。*#&$ http_proxy#「somefile' – NeronLeVelu 2015-02-06 15:12:01
不要使用」pattern「這個詞,因爲它的含義很模棱兩可。對於數字,字符串還是正則表達式?是否需要部分匹配或完全匹配?如果完全匹配,哪些分隔了您要匹配的文本部分 - 多個字符或特定字符或別的嗎? – 2015-02-06 15:49:54
你有正確的答案已經。一個額外的提示是,你可以簡化你的模式。嘗試類似'sed「/ pattern/s#$#$ htttp_proxy#」'如果你願意,你可以逃離第一個美元符號,但至少在bash和sh中,你不需要。如果你在csh或tcsh中執行此操作,則可能需要'sed「/ pattern/s#」'$'「#$ http_proxy#」' – ghoti 2015-02-06 16:04:07