有一堆 GPS 資料想要使用,但在紀錄資料時,有可能某處停留較久,因此會有重複資料的問題。解決方式可以寫簡單的程式,但我一直想不出有哪個洽當的 Unix 指令可以用,就先挑 awk 來使用。

資料格式:

25.064903,121.526657,
25.064903,121.526657,
25.064903,121.526657,
25.064898,121.526573,
25.064898,121.526573,
25.064898,121.526573,
25.064890,121.526489,
25.064890,121.526489,
25.064886,121.526436,
25.064886,121.526436,

輸出目標:

25.064903,121.526657,
25.064898,121.526573,
25.064890,121.526489,
25.064886,121.526436,

指令:

$ awk '{ if( !a[$0] ){ print $0 ; a[$0] = 1; } }' in.txt

使用簡單的 hash 概念。但比較重要的是指令少用,紀錄一下,以節省以後的時間花費。

感謝許青蛙補充!若不在意順序還可以用 sort -u 就好

感謝 fin 補充,對於連續的資料可以採用 uniq 來處理就行啦,所以在這個情境下就是連續性的刪除,可以用:

$ cat in.txt | uniq


changyy 發表在 痞客邦 PIXNET 留言(0) 人氣()