在Linux中使用vim替换特定单词

时间:2019-02-15 08:19:43

标签: vim grep

我有一个.txt文件,其中包含以下信息:

...

353 48 338 48 338 9 353 9 **personperson走** 281 64 259 64 259 4 281 4 person

353 48 338 48 338 9 353 9 **personabc** 281 64 259 64 259 4 281 4 person

353 48 338 48 338 9 353 9 **persondef** 281 64 259 64 259 4 281 4 person

...

我想将所有那些粗体字替换为个人 (原始单词为普通类型,不以粗体显示)

像这样:

...

353 48 338 48 338 9 353 9 **person** 281 64 259 64 259 4 281 4 person

353 48 338 48 338 9 353 9 **person** 281 64 259 64 259 4 281 4 person

353 48 338 48 338 9 353 9 **person** 281 64 259 64 259 4 281 4 person

...

我尝试使用以下命令替换,但是old_string部分不同。

%s/old_string/new_string/g

有什么方法可以使用(old_string)部分中的grep替换person *(在空白处停止)

2 个答案:

答案 0 :(得分:2)

您可以在vim中使用以下内容:

:%s/person\w\+/person/g

这将替换所有接续人的单词,然后逐字替换字符

有关vim中替代功能的更多信息,您可以在这里找到:http://vim.wikia.com/wiki/Search_and_replace

答案 1 :(得分:0)

我会做的:

%s/\<person\zs\S\+//g
  • 这不会将foopersonbar替换为fooperson
  • 这将替换中文单词(OP的意思是“停在空白处”)