UltKit

移除重複行

貼上清單後,每一行在第一次出現之後的重複內容都會被刪除,其餘各行維持原本的順序。比對時可忽略英文大小寫與多餘的空格,全程在瀏覽器中執行。

0 個字元 · 0 個字詞 · 0 行

0 個字元 · 0 個字詞 · 0 行

完全在此瀏覽器分頁中執行,您的文字不會被上傳或儲存。

功能說明

移除重複行 保留每一行第一次出現的內容,刪除之後的重複行,並維持原本的順序。比對時可忽略大小寫與前後空白,空白行可選擇保留或移除。

處理前
red
blue
Red
green
處理後
red
blue
green

誰需要清除清單重複項目,以及原因

只要合併清單,就會出現重複的行。行銷人員合併兩份匯出的電子郵件名單、研究人員從多個工具蒐集關鍵字、開發人員從記錄檔整理網址、老師把三份報名表的姓名貼在一起:最後都會得到出現兩次以上的項目。試算表也能移除重複項目,但得先開啟檔案、選取欄位,再找到對應的選單;資料已經在剪貼簿時,直接貼進文字方塊會更快。

保留原本的順序比想像中重要。步驟清單、排名,或依爬取順序排列的網址,一旦排序就失去意義。這裡第一次出現的行會留在原位,之後重複的行則直接捨棄,並以計數器顯示移除了多少行,方便你判斷結果是否合理。

比對方式與看不見的差異

從上到下讀取清單時,每一行會先處理成比對用的鍵值並存入集合;若某行的鍵值已在集合中,就是重複行。整個過程只需掃描一次,因此數十萬行的清單也能快速處理。這也與傳統 Unix 的 uniq 指令不同:uniq 只會移除相鄰的重複行,所以通常要先執行 sort,因而失去原本的順序。awk 的慣用寫法 awk '!seen[$0]++' 與本工具的作用相同。

兩行看起來一樣,實際上仍可能不同。行尾多一個空格、用 Tab 代替空格,或從網頁複製來的不換行空格,都會讓電腦把它們視為不同的字串。開啟修剪功能,即可忽略每行頭尾的空白,包括不換行空格。關閉區分大小寫,就會把「Paris」和「paris」視為同一項目,並保留最先出現的寫法。空白行可以保留,讓段落維持分隔,也可以全部移除。

清理完成之後

去除重複後,清單通常還需要排序:行排序可依字母、自然順序或長度排列。如果清單來自 PDF 或斷行錯亂的電子郵件,請先用其他文字工具修正,因為被拆成兩行的項目,無法與完整的相同項目比對成功。

常見問題

重複的行會保留哪一行?
保留第一個。之後內容相同的行都會被移除,其餘行維持原本的順序,不會被重新排列。
為什麼兩行看起來一模一樣卻沒有被移除?
它們之間有肉眼看不出的差異,最常見的是行尾空格、Tab 或不換行空格。請開啟修剪選項;如果只是大小寫不同,則選擇忽略大小寫。
這和 uniq 指令有什麼不同?
uniq 只會在某行與正上方那一行相同時才移除,所以通常要搭配 sort 使用。本工具能找出文字中任何位置的重複行,並保留原本的順序。
可以同時移除重複行並排序清單嗎?
先在這裡移除重複,再把結果貼到行排序。分成兩個步驟,需要時可保留最先出現的順序,想排序時才排序。