在bash脚本中,我正在尝试用新文本替换以注释开头的行。 sed没有告诉我哈希字符是Unknown option to s
sed -i -e "s/#a line/the new line with some $varname/g" "path/to/filename"
我在#上尝试过一次反斜杠无效。我如何使用sed哈希,是的,我必须使用双引号来管理变量的使用。
答案 0 :(得分:3)
问题与#
无关。您收到错误,因为您注入sed脚本的变量恰好包含/
个字符。如果您知道某个字符肯定不会出现在模式或替换中,请将其用作s
命令的分隔符。例如。假设|
是安全的:
sed "s|#a line|the new line with some $varname|" file > file.tmp &&
mv file.tmp file
或者,c
命令可用于更改整行:
sed "/#a line/c\\
the new line with some $varname" file > file.tmp &&
mv file.tmp file
或者更好,找到一种方法来做到这一点而不将数据注入代码(例如ed,ex或awk)