Regex 如何用vi替换使用正则表达式的每行中重复的字符串?

Regex 如何用vi替换使用正则表达式的每行中重复的字符串?,regex,vim,replace,duplicates,Regex,Vim,Replace,Duplicates,如何用vi替换使用正则表达式的每行中重复的字符串? 例如,我有一个包含重复文本的海港列表 我的目标是实现以下输出: (输入)重复列表 Andorra La Vella Andorra La Vella Al Ain Al Ain Abu al Bukhoosh Abu al Bukhoosh Ajman Ajman Arzanah Island Arzanah Island Abu Dhabi Abu Dhabi Das Island Das Island Al Dhafra Al Dhafra

如何用vi替换使用正则表达式的每行中重复的字符串? 例如,我有一个包含重复文本的海港列表

我的目标是实现以下输出:

(输入)重复列表

Andorra La Vella Andorra La Vella
Al Ain Al Ain
Abu al Bukhoosh Abu al Bukhoosh
Ajman Ajman
Arzanah Island Arzanah Island
Abu Dhabi Abu Dhabi
Das Island Das Island
Al Dhafra Al Dhafra
Ras Zubbaya (Ras Dubayyah) Ras Zubbaya (Ras Dubayyah)
Dubai Dubai
Fateh Terminal Fateh Terminal
Fujairah (Al-Fujairah) Fujairah (Al-Fujairah)
Musafa Musafa
Hamriyah Hamriyah
Jebel Ali Jebel Ali
Jebel Dhanna Jebel Dhanna
Khor Al Fakkan Khor Al Fakkan
Masfut Masfut
Mubarras Island Mubarras Island
(输出)更正列表

Andorra La Vella
Al Ain
Abu al Bukhoosh
Ajman
Arzanah Island
Abu Dhabi
Das Island
Al Dhafra
Ras Zubbaya (Ras Dubayyah)
Dubai
Fateh Terminal
Fujairah (Al-Fujairah)
(...)
有什么见解吗


(中可用端口的完整列表)

为文件的每一行应用替换命令:

:%s/\v(.*)\s*\1/\1/
它产生:

Andorra La Vella 
Al Ain 
Abu al Bukhoosh 
Ajman 
Arzanah Island 
Abu Dhabi 
Das Island 
Al Dhafra 
Ras Zubbaya (Ras Dubayyah) 
Dubai 
Fateh Terminal 
Fujairah (Al-Fujairah) 
Musafa 
Hamriyah 
Jebel Ali 
Jebel Dhanna 
Khor Al Fakkan 
Masfut 
Mubarras Island

为文件的每一行应用替换命令:

:%s/\v(.*)\s*\1/\1/
它产生:

Andorra La Vella 
Al Ain 
Abu al Bukhoosh 
Ajman 
Arzanah Island 
Abu Dhabi 
Das Island 
Al Dhafra 
Ras Zubbaya (Ras Dubayyah) 
Dubai 
Fateh Terminal 
Fujairah (Al-Fujairah) 
Musafa 
Hamriyah 
Jebel Ali 
Jebel Dhanna 
Khor Al Fakkan 
Masfut 
Mubarras Island

太好了,成功了!你能解释一下\v@AntónioGonçalves的“魔法”功能吗?@AntónioGonçalves的意思是非常神奇的,大多数角色都有它的特殊含义(如果有的话)并且避免逃避它们。查看
vim
@AntónioGonçalves中的
help magic
:如果这对你有效,你应该接受答案,这样人们在未来会看到类似的问题。太好了,它有效了!你能解释一下\v@AntónioGonçalves的“魔法”功能吗?@AntónioGonçalves的意思是非常神奇的,大多数角色都有它的特殊含义(如果有的话)并且避免逃避它们。查看
vim
@AntónioGonçalves中的
help magic
:如果这对你有效,你应该接受答案,这样人们将来会发现类似的问题。