首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sed用空格替换文本

使用sed用空格替换文本
EN

Stack Overflow用户
提问于 2014-10-02 13:44:04
回答 2查看 827关注 0票数 0

我有一个叫做Gemfile的文件。该文件中的一行如下:

代码语言:javascript
复制
gem 'my-platform', git: 'git@github.com:me/platform-engine.git'

我想用这个代替它:

代码语言:javascript
复制
gem 'my-platform', git: 'git@github.com:me/platform-engine.git', branch:'issue-2'

为此,我使用了以下命令:

代码语言:javascript
复制
sed -i s#platform-engine.git\'#platform-engine.git\', branch:\'issue-2\'#g Gemfile

但我知道这个错误:

sed:-e表达式#1,char 44:未终止的命令

我做错了什么?我怎么才能修好它?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-02 13:47:31

在我看来,你只想在这行的末尾加上一些文字。如果是这样,请使用$引用行尾并执行以下替换操作:

代码语言:javascript
复制
sed -i.bak "/platform-engine.git/s/$/, branch:'issue-2'/" Gemfile

这会将给定的文本添加到包含platform-engine.git的行的末尾。注意,没有必要使用/g,因为您只想每一行做一次替换。

注意,创建备份文件也是一个很好的实践,以防万一!

如果您需要使用任何意义上的单引号,请使用以下转义策略:

代码语言:javascript
复制
sed 's/'\''//'
       ^^^^
       just to match as single quote!

测试:

代码语言:javascript
复制
$ echo "he'llo" | sed 's/'\''//'
hello

否则,您将得到您提到的错误:"sed:-e表达式#1,char 44: un终止的‘命令’“。

票数 2
EN

Stack Overflow用户

发布于 2014-10-02 13:47:01

如果将模式放入双引号中,则不需要转义'

代码语言:javascript
复制
sed "s~platform-engine.git'~platform-engine.git', branch:'issue-2'~g" file

代码语言:javascript
复制
$ sed "s~platform-engine.git'~&, branch:'issue-2'~g" file
gem 'my-platform', git: 'git@github.com:me/platform-engine.git', branch:'issue-2'

&指匹配的字符。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26162216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档