1

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)
(...)

洞察はありますか?

(利用可能なポートの完全なリストはhttp://www.photius.com/seaports/にあります)

4

1 に答える 1

5

ファイルの各行に置換コマンドを適用します。

:%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
于 2013-09-30T09:57:59.077 に答える