如何使用 sed [重复] 将包含单引号的行添加到文件中

如何使用 sed [重复] 将包含单引号的行添加到文件中

我想使用 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

相关内容