Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 使用 sort、uniq、MySQL 快速去除大型檔案重複行或指定欄位重複資料

編輯:關於 Linux

處理大量文本資料時,需快速刪除重複行。本文介紹三種場景解決方案:去除相鄰重複、去除所有重複、依特定欄位去除大數據重複。

1. 去除相鄰重複行

cat data1.txt | uniq

輸出保留首次出現的相鄰行。

2. 去除所有重複行

cat data1.txt | sort | uniq

sort 將所有相同行聚集相鄰,再由 uniq 去重,得到唯一行集合。

3. 大數據檔案依特定欄位去重 (百萬行級)

利用 MySQL 匯入後用 SQL 處理:

  1. 建表並匯入:
    mysqlimport --local dbname data.txt  # 表名需與檔名一致
  2. 執行去重 SQL (假設第二欄位 uniqfield 需唯一):
    USE dbname;
    ALTER TABLE tablename ADD rowid INT AUTO_INCREMENT NOT NULL;
    CREATE TABLE t SELECT MIN(rowid) AS rowid FROM tablename GROUP BY uniqfield;
    CREATE TABLE t2 SELECT tablename.* FROM tablename, t WHERE tablename.rowid = t.rowid;
    DROP TABLE tablename;
    RENAME TABLE t2 TO tablename;

此法適用於單機工具無法處理的超大檔案去重需求。

Copyright © Windows教程網 All Rights Reserved