我需要在http://localhost:3128
env var中添加一个URL($http_proxy
),该URL位于以单个文件的PATTERN
开头的所有行的末尾。
$ sed "/^PATTERN/ s/.*/& test/" somefile
效果很好,但只要我用test
替换$http_proxy
,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
有什么想法吗?
答案 0 :(得分:1)
仅在s///
部分中使用其他sed分隔符。并且ypy不需要将&
放在替换部分中,因为您尝试在最后添加字符串,替换行$
的末尾就足够了。
sed "/^PATTERN/s~$~ $http_proxy~" somefile
答案 1 :(得分:1)
使用不受分隔符或可变内容影响的工具:
$ cat file
foo bar
PATTERN here
some line
$ awk -v pxy="$http_proxy" '/^PATTERN/{$0=$0" "pxy} 1' file
foo bar
PATTERN here http://localhost:3128
some line
答案 2 :(得分:0)