我想使用 sed 将以下行附加到文本文件中:
gem 'forum2discourse'
我已经尝试过sed -i '$a gem \'forum2discourse\'' Gemfile
,但这会让我出现>
提示,所以我想我一定是错误地转义了'
字符
答案1
sed -i '$a gem '"'"'forum2discourse'"'" Gemfile
替代解决方案
如果您想按照自己的方式进行操作,请使用 bash$'string'
格式。 $'string' 形式的单词会被特殊处理。该单词扩展为字符串,并按照 ANSI C 标准指定的方式替换反斜杠转义字符。
sed -i $'$a gem \'forum2discourse\'' Gemfile
来源:http://wiki.bash-hackers.org/syntax/quoting#ansi_c_like_strings
答案2
至少对于 GNU sed:
sed -i.bak '$a gem \x27forum2discourse\x27' file
答案3
sed -i -e '$a gem '"'"'forum2discourse'"'" yourfile