我在文件中有一个类似“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