使用sed将文本替换为空格

使用sed将文本替换为空格,sed,Sed,我有一个文件叫Gemfile。此文件中的一行是: gem 'my-platform', git: 'git@github.com:me/platform-engine.git' 我想用这个来代替它: gem 'my-platform', git: 'git@github.com:me/platform-engine.git', branch:'issue-2' 为此,我使用了以下命令: sed -i s#platform-engine.git\'#platform-engine.git\',

我有一个文件叫Gemfile。此文件中的一行是:

gem 'my-platform', git: 'git@github.com:me/platform-engine.git'
我想用这个来代替它:

gem 'my-platform', git: 'git@github.com:me/platform-engine.git', branch:'issue-2'
为此,我使用了以下命令:

sed -i s#platform-engine.git\'#platform-engine.git\', branch:\'issue-2\'#g Gemfile
但我得到了这个错误:

sed:-e表达式#1,char 44:unterminated's'命令


我做错了什么?如何修复它?

如果将模式放在双引号内,则不需要转义

sed "s~platform-engine.git'~platform-engine.git', branch:'issue-2'~g" file


&
指匹配的字符。

如果将模式放在双引号内,则不需要转义

sed "s~platform-engine.git'~platform-engine.git', branch:'issue-2'~g" file


&
指匹配的字符。

如果将模式放在双引号内,则不需要转义

sed "s~platform-engine.git'~platform-engine.git', branch:'issue-2'~g" file


&
指匹配的字符。

如果将模式放在双引号内,则不需要转义

sed "s~platform-engine.git'~platform-engine.git', branch:'issue-2'~g" file


&
指的是匹配的字符。

在我看来,您只是想在行尾添加一些文本。如果是这样,请使用
$
参考行尾并执行此替换:

sed -i.bak "/platform-engine.git/s/$/, branch:'issue-2'/" Gemfile
这会将给定文本添加到包含
platform engine.git
的行的末尾。注意:不需要使用
/g
,因为您只需要每行更换一次

另外请注意,创建备份文件是一种很好的做法,以防万一


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

sed 's/'\''//'
       ^^^^
       just to match as single quote!
测试:


否则会出现您提到的错误:“sed:-e expression#1,char 44:unterminated`s'命令”。

在我看来,您只是想在行尾追加一些文本。如果是这样,请使用
$
参考行尾并执行此替换:

sed -i.bak "/platform-engine.git/s/$/, branch:'issue-2'/" Gemfile
这会将给定文本添加到包含
platform engine.git
的行的末尾。注意:不需要使用
/g
,因为您只需要每行更换一次

另外请注意,创建备份文件是一种很好的做法,以防万一


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

sed 's/'\''//'
       ^^^^
       just to match as single quote!
测试:


否则会出现您提到的错误:“sed:-e expression#1,char 44:unterminated`s'命令”。

在我看来,您只是想在行尾追加一些文本。如果是这样,请使用
$
参考行尾并执行此替换:

sed -i.bak "/platform-engine.git/s/$/, branch:'issue-2'/" Gemfile
这会将给定文本添加到包含
platform engine.git
的行的末尾。注意:不需要使用
/g
,因为您只需要每行更换一次

另外请注意,创建备份文件是一种很好的做法,以防万一


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

sed 's/'\''//'
       ^^^^
       just to match as single quote!
测试:


否则会出现您提到的错误:“sed:-e expression#1,char 44:unterminated`s'命令”。

在我看来,您只是想在行尾追加一些文本。如果是这样,请使用
$
参考行尾并执行此替换:

sed -i.bak "/platform-engine.git/s/$/, branch:'issue-2'/" Gemfile
这会将给定文本添加到包含
platform engine.git
的行的末尾。注意:不需要使用
/g
,因为您只需要每行更换一次

另外请注意,创建备份文件是一种很好的做法,以防万一


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

sed 's/'\''//'
       ^^^^
       just to match as single quote!
测试:

否则会出现您提到的错误:“sed:-e表达式#1,char 44:unterminated`s'命令”