使用 sed 查找一个单词并替换另一个单词

使用 sed 查找一个单词并替换另一个单词

我在文件中有一个类似“mode v”的单词。我想将其替换为“mode sv”。然而我所有的努力都失败了,因为模式后面有空格

答案1

您可以sed像这样进行搜索和替换。

$ sed 's/mode v/mode sv/g'

例子

假设我有这个示例文件:

$ cat afile.txt 
mode v modev mode v
blah
blah blah modev mode
blah
modev mode v

我可以用来sed搜索/替换该文件并保留备份,如下所示:

$ sed -i.bak 's/mode v/mode sv/g' afile.txt 

我现在有2个文件:

$ ls -ltr | grep afile
-rw-rw-r--. 1 slm slm      64 Sep 23 20:13 afile.txt.bak
-rw-rw-r--. 1 slm slm      67 Sep 23 20:15 afile.txt

对原文做了如下修改:

$ cat afile.txt
mode sv modev mode sv
blah
blah blah modev mode
blah
modev mode sv

笔记:如果您需要它作为有保证的单词边界,您可以mode v在搜索中添加后缀\b.

$ sed -i.bak 's/mode v\b/mode sv/g' afile.txt 

答案2

仅当模式是行中的第一个单词并将“mode”之后的所有内容替换为“sv”时,注释中的解决方案才有效。从你的问题来看,我相信这不是你的本意。没有理由把事情复杂化,简单

sed 's/mode /mode s/g'

应该管用。或者

sed s/"mode "/"mode s"/g

相关内容