任何人都可以告诉我如何更改此命令:
sed -i.bak "/group :test/ a gem 'selenium-webdriver'" Gemfile
在Mac上工作? 得到此错误:
sed: 1: "/group :test/ a gem 'se ...": command a expects \ followed by text
我试图做一个\但没有帮助。
答案 0 :(得分:3)
您使用a
命令的方式是a GNU sed
extension,即a
与要插入的文本之间的空格。{{3}}。可移植的方法是使用反斜杠,然后换行:
$ echo 'group :test' | sed "/group :test/ a\\
gem 'selenium-webdriver'"
group :test
gem 'selenium-webdriver'
确保正确引用反斜杠,以便将其传递给sed
,而不是被shell吞噬。
答案 1 :(得分:0)
作为替代方案,您可以在awk中执行相同的操作:
cp Gemfile Gemfile.bak
awk '1;/group :test/{print "gem '"'"'selenium-webdriver'"'"'"}' Gemfile > tmp && mv tmp Gemfile
开头的1
表示文件中的每一行都会打印出来。匹配模式时会附加该行。
要获取字符串中的引号,必须关闭单引号,在双引号内写入单引号,然后重新打开单引号以继续awk命令。简单;)