我正在處理2個大型CSV文件。較小的是較大的子集。第一個字段是一個非唯一鍵,它是一個customerID。使用grep從文件中刪除行,其中的密鑰存在於另一個文件中
我想從中找到有場1作爲較小的文件相同的值越大文件中的所有行,然後找到原來的子集這一結果之間的增量,和。
然後,我想從已經在存在於增量域一個值的原始部分中刪除所有行。
換句話說:我想從具有其也存在於現有的大型原文件中的一行,而不是在較小的子集的custromerID原來的小部分中刪除任何行。
目前我正在做類似下面,我不明白爲什麼結果爲0
顯然有我的邏輯缺陷,而這顯然不這樣做最優雅的方式,所以請,我願意提供更好的方法。
文件:full.csv
,1052,tec101,UNIX
,1052,ser303,UNIX
,1052,backu2,UNIX
,1052,sma114,UNIX
,1052,appsup,UNIX
,1052,emails,UNIX
,1059,marygs,UNIX
,39835,deepr2,UNIX
,44536,hai499,UNIX
,1274,lemo27,Windows
,48567,wdanro,UNIX
,81860,pro846,UNIX
,1419,graphe,UNIX
,83999,doerf1,UNIX
,1551,taxtri,UNIX
,1572,lodes4,UNIX
,1603,wes244,Windows
,102888,law642,UNIX
,1700,au2960,UNIX
文件:subset.csv
,1052,sma114,UNIX
,1052,appsup,UNIX
,1052,emails,UNIX
,1059,marygs,UNIX
,39835,deepr2,UNIX
,44536,hai499,UNIX
,1274,lemo27,Windows
,48567,wdanro,UNIX
,81860,pro846,UNIX
,1419,graphe,UNIX
我現在正在做什麼:
[[email protected] sandbox]$ wc -l *
19 full.csv
10 subset.csv
29 total
[[email protected] sandbox]$ cat subset.csv | awk -F, '{print ","$2","}' > subset_keys
[[email protected] sandbox]$ grep -F -f subset_keys full.csv | wc -l
13
[[email protected] sandbox]$ grep -F -f subset_keys full.csv | head -n2
,1052,tec101,UNIX
,1052,ser303,UNIX
[[email protected] sandbox]$ grep -F -f subset_keys full.csv > subset_keys_grep
[[email protected] sandbox]$ cat subset_keys_grep | awk -F, '{print ","$2","}' | head -n2
,1052,
,1052,
[[email protected] sandbox]$ cat subset_keys_grep | awk -F, '{print ","$2","}' | wc -l
13
[[email protected] sandbox]$ cat subset_keys_grep | awk -F, '{print ","$2","}' > keys_to_remove
[[email protected] sandbox]$ grep -F -f keys_to_remove subset.csv | wc -l
10
[[email protected] sandbox]$ grep -F -f keys_to_remove subset.csv > lines_to_remove
[[email protected] sandbox]$ grep -Fv -f lines_to_remove subset.csv | wc -l
0
我預期的結果應該是7,或,沒有統計,以下:
,1059,marygs,UNIX
,39835,deepr2,UNIX
,44536,hai499,UNIX
,1274,lemo27,Windows
,48567,wdanro,UNIX
,81860,pro846,UNIX
,1419,graphe,UNIX
結果應該是7行的子集的有隻存在子集customerIDs,而不是其他地方也以完整的文件。
我不太關注你正在嘗試做什麼。這可能有助於添加一個具體的縮短的例子,例如兩個有問題的文件,但是短的十行和長的二十個。然後指出您如何期望這些文件符合您提議的流程和結果。 – danfuzz
好吧,我會試着想出一個更簡單的例子,實際的文件中有敏感信息,所以我不能只提供一個子集來玩。 –
我簡化了示例 –