2023-12-19|閱讀時間 ‧ 約 3 分鐘

【Linux疑難雜症】Linux如何快速檢查csv某個欄位值是否重複

raw-image



情境描述

小明身為Linux系統工程師, 目前接到一個緊急任務, 需要在客戶端確保csv表的某個欄位的值不能重複, 對於軟體工程師來說只要寫個程式就能夠解決, 但客戶端並沒有相關的程式語言啊! 這時候只能夠使用現成的工具來完成,而經驗老道的我們很快就想到了解決方法, 不要急, 就讓我們一步步說明完畢後再來細說解決方法。

首先我們假設csv表會有這樣的資料如下, 欄位包含名字、年齡、Email資訊:

Name,Age,Email
John,25,john@example.com
...

那麼假設我們今天想要針對csv表進行合併, 那麼欄位的標頭已經固定的情境之下, 為了確保合併的「名字」不要重複時, 我們可以怎麼檢查呢?

表格內容

test.csv

Name,Age,Email
John,25,john@example.com
Amy,26,amy@example.com
John,25,john@example.com

檢查「Name」欄位是否重複

我們會用到的招式有「剪欄位、排序、重複」 , 對應到Linux的指令有「cut、sort、uniq」, 透過這三個工具的組合技巧就能夠讓我們快速檢測出欄位值是否有重複。

使用「cut」擷取特定欄位

這邊我們要擷取的是第一欄

cut -d ',' -f 1 test.csv

結果

Name
John
Amy
John

使用「sort」排序這些值

cut -d ',' -f 1 test.csv|sort

結果

Amy
John
John
Name

使用「uniq」來顯示重複值

-d 選項告訴 uniq 只顯示重複的值。

cut -d ',' -f 1 test.csv | sort | uniq -d

結果

John

結語

原來許多小技巧的文字處理都能夠直接用原生的Linux功能處理, 當越來越多的大型系統都使用Linux作業系統時, 我們也應該具備一些強大的工具技能, 就讓我們慢慢的掌握這些小技巧吧!

分享至
成為作者繼續創作的動力吧!
© 2024 vocus All rights reserved.