----------- Reply -----------
這個問題,一般的處理方式(不在 Vim 中)是:
sort file | uniq > file.new
基本上就是先排序,然用 uniq 指令把重複的行去掉。在 Vim 中的話,可以使用:
:sort u
就可以了。現在問題來了,排序後,文件內容就變樣了。如何不排序的情況下刪除重複行呢?這在 Vim 中處理起來會複雜化,也不容易理解,有興趣的朋友可參考以下網頁的說明:
https://vim.fandom.com/wiki/Uniq_-_Removing_duplicate_lines
我個人是傾向用 awk 來處理,簡單明瞭,好理解(用陣列 array 的方式就不用排序了):
awk '!x[$0]++' some.file > new.file
其實在 Vim 裡頭也可以呼叫 awk 來處理:
:%!awk '\!x[$0]++'
這是我個人覺得最簡單,最有效率的處理方式。