我想做这样的事情,但我不知道该怎么做。
我想将 exports.version = '2.0.0' 更新为新值 exports.version = '2.0.1'
使用:
sed -i '.bak' 's/'2.0.0'/'2.0.1'/g' phantomjs.js
但这可能会导致问题,因为我有 2.0.0 的其他东西
sed -i '.bak' 's/exports.version = '2.0.0'/exports.version = '2.0.1'/g' phantomjs.js
简而言之,如何向 sed 提供 exports.version = '2.0.0' 模式
uname -a
15.0.0 Darwin 内核版本 15.0.0:2015 年 9 月 19 日星期六 15:53:46 PDT;root:xnu-3247.10.11~1/RELEASE_X86_64 x86_64
谢谢,
大号
答案1
尝试这个:
sed -i '.bak' "s/exports\.version = '2\.0\.0'/exports.version = '2.0.1'/g" phantomjs.js
答案2
您尝试将单引号放在单引号字符串内。如果这样做,您需要像这样输入它们:
$ sed -i .bak 's/exports.version = '\''2.0.0'\''/exports.version = '\''2.0.1'\''/g' phantomjs.js
无法直接将单引号放在单引号字符串内。在上面的代码中,之所以'\''
有效,是因为第一个单引号结束了前面的单引号字符串,然后\'
将转义的单引号放在命令行上,接下来的单引号'
开始一个新的单引号字符串。
在您的特定情况下,您还可以使用双引号字符串:
sed -i .bak "s/exports.version = '2.0.0'/exports.version = '2.0.1'/g" phantomjs.js
这很方便,因为可以将单引号放在双引号字符串中而无需任何转义。但这很棘手,因为您必须确保字符串中没有 shell 活动字符。在本例中,没有,所以它恰好是安全的。