αԋɱҽԃ αмєяιcαη Asked: 2018-06-05 00:57:54 +0800 CST2018-06-05 00:57:54 +0800 CST 2018-06-05 00:57:54 +0800 CST 如何用sed中的空格替换加号? 772 输入: United+States 输出: United States 我尝试了很多次都sed没有成功。 sed 3 个回答 Voted Best Answer sudodus 2018-06-05T01:02:07+08:002018-06-05T01:02:07+08:00 默认情况下,sed使用基本正则表达式 (BRE),其中加号并不特殊。因此,您可以s像使用常规字符一样在命令中使用它: <<< 'United+States' sed 's/+/ /g' 如果要修改同一行 ( g) 或多行中包含多个实例的文件 sed 's/+/ /g' filename 如果您使用扩展正则表达式(ERE,sed -E在支持它的版本中sed),那么您需要转义加号: sed -E 's/\+/ /g' ... (有关正则表达式变体之间的区别,请参阅此问题。) Kusalananda 2018-06-05T01:16:49+08:002018-06-05T01:16:49+08:00 $ echo 'United+States' | tr '+' ' ' United States 由于您只更改单个字符,因此使用tr. 等效sed脚本看起来像 $ echo 'United+States' | sed 'y/+/ /' United States 或者 $ echo 'United+States' | sed 's/+/ /g' United States y命令 in将sed所有出现的第一组字符(仅+在此处)替换为第二组中的相应字符(此处仅空格)。 该s命令将匹配正则表达式的文本替换为一些文本。使用g,它在每次出现时都会这样做。没有它,仅适用于每个输入行的第一个。 仅当加号旁边有单词时才将加号更改为空格: sed 's/\>+\</ /g' 这将更a+b改为a b但会离开a + b且未a++b修改。 该模式\>匹配单词末尾的零宽度空格,并且\<类似于单词开头。GNUsed也能理解\b(词的开头或结尾),而 BSDsed知道[[:<:]]和分别与和[[:>:]]一样工作。\<\> Eranda Peiris 2018-06-05T01:05:47+08:002018-06-05T01:05:47+08:00 您可以检查此示例并根据您的结果工作。 示例:- 此代码进行更改并将修改后的文件写入“songs2.txt”。输出文件包含: 1,贾斯汀汀布莱克,标题 545,价格 7.30 美元 2,泰勒斯威夫特,标题 723,价格 7.90 美元 3,米克贾格尔,标题 610,价格 7.90 美元 4,Lady Gaga,标题 118,价格 7.30 美元 5,约翰尼卡什,标题 482,价格 6.50 美元 6,猫王,标题 335,价格 7.30 美元 7,约翰列侬,标题 271,价格 7.90 美元 如果要将所有出现的“ Cash ”替换为“ Trash ”,请使用: sed 's/Cash/Trash/' songs.txt > songs2.txt 参考链接:-在 Linux 中使用 Sed 命令的快速指南
默认情况下,
sed
使用基本正则表达式 (BRE),其中加号并不特殊。因此,您可以s
像使用常规字符一样在命令中使用它:如果要修改同一行 (
g
) 或多行中包含多个实例的文件如果您使用扩展正则表达式(ERE,
sed -E
在支持它的版本中sed
),那么您需要转义加号:(有关正则表达式变体之间的区别,请参阅此问题。)
由于您只更改单个字符,因此使用
tr
.等效
sed
脚本看起来像或者
y
命令 in将sed
所有出现的第一组字符(仅+
在此处)替换为第二组中的相应字符(此处仅空格)。该
s
命令将匹配正则表达式的文本替换为一些文本。使用g
,它在每次出现时都会这样做。没有它,仅适用于每个输入行的第一个。仅当加号旁边有单词时才将加号更改为空格:
这将更
a+b
改为a b
但会离开a + b
且未a++b
修改。该模式
\>
匹配单词末尾的零宽度空格,并且\<
类似于单词开头。GNUsed
也能理解\b
(词的开头或结尾),而 BSDsed
知道[[:<:]]
和分别与和[[:>:]]
一样工作。\<
\>
您可以检查此示例并根据您的结果工作。
示例:- 此代码进行更改并将修改后的文件写入“songs2.txt”。输出文件包含:
1,贾斯汀汀布莱克,标题 545,价格 7.30 美元
2,泰勒斯威夫特,标题 723,价格 7.90 美元
3,米克贾格尔,标题 610,价格 7.90 美元
4,Lady Gaga,标题 118,价格 7.30 美元
5,约翰尼卡什,标题 482,价格 6.50 美元
6,猫王,标题 335,价格 7.30 美元
7,约翰列侬,标题 271,价格 7.90 美元
如果要将所有出现的“ Cash ”替换为“ Trash ”,请使用:
参考链接:-在 Linux 中使用 Sed 命令的快速指南