2016-03-14 41 views
0

我在搜索時發現此答案(Find duplicate lines in a file and count how many time each line was duplicated?),它解決了重複行的問題,但我有一個特殊問題。在文本文件中查找重複行開頭

我需要找到具有相同行開頭的行的重複項。

例如:

2501,3,0,1,0,1457695800 
2501,3,0,1,0,1457789340 
2502,3,0,0,0,1457695800 
2502,3,0,0,0,1457789340 
2503,3,0,0,0,1457789340 
2504,3,0,0,0,1457789340 
2505,3,0,0,0,1457789340 

在CSV數據之上,25012502將是重複的,如果時間戳是不存在。

有沒有辦法通過只考慮前5個字段來找到它們作爲重複項,即不包括時間戳?

回答

0

我結束了由黏合一堆命令一起找到了答案:

cat my_file.csv | perl -p -i -n -e 's/^(.*),[0-9]{10}.+?$/$1/' | sort | uniq -d 

所以基本上,步驟是:

  1. 使用cat獲取文件的內容
  2. 將其管道到perl並使用正則表達式僅獲取捕獲組(在本例中爲時間戳之前的所有內容)
  3. 將輸出管道輸出爲sort將內容
  4. 使用uniq排序與-d開關找到行復制

如果你喜歡你也可以將結果輸出到文件:

cat my_file.csv | perl -p -i -n -e 's/^(.*),[0-9]{10}.+?$/$1/' | sort | uniq -d > line_duplicates.txt 

希望這有助於。