2017-09-28 1 views
1

Ich habe eine flache Datei „Master_Data“ mit folgenden Linien genannt: (Customer_Key Unter Berücksichtigung ist Primärschlüssel)Zeile löschen, die bestimmte Zeichenfolge/Wert übereinstimmt

Customer_Key,Customer_ID,Location 
"1","1001","Washington D.C" 
"2","1002","Los Angeles" 
"3","1003","New York" 

I erhalten ähnliche Struktur Datei mit dem Namen „Daily_Data“. Ich muss die Zeilen an die Datei "Master_Data" anhängen, falls es eine neue Zeile ist. Aktualisieren/Löschen der bestehenden Zeile. So erhielt ich die "Daily_Data" Datei wie folgt:

Customer_Key,Customer_ID,Location 
"3","1003","Austin" 
"4","1004","San Jose" 

Dann sollten meinen Code erzeugen/modifizieren, um die "Master_Data" Datei wie folgt:

Customer_Key,Customer_ID,Location 
"1","1001","Washington D.C" 
"2","1002","Los Angeles" 
"3","1003","Austin" 
"4","1004","San Jose" 

Ich habe schon versucht, diese so weit

sed -n '2,$p' /users/files/Daily_Data.csv >> /users/files/Master_Data.csv 

Aber diese Kopien nur die Daten von Daily_Data und wie unten an Master_Data anhängen:

Customer_Key,Customer_ID,Location 
"1","1001","Washington D.C" 
"2","1002","Los Angeles" 
"3","1003","New York" 
"3","1003","Austin" 
"4","1004","San Jose" 

Was soll ich verwenden/versuchen, die Linie "3","1003","New York" in bestmöglicher Weise zu beseitigen.

Antwort

0

awk verwenden, können Sie dies tun:

awk -F, 'NR==FNR{a[$1]=$0; next} $1 in a{$0=a[$1]; delete a[$1]} 1; 
END{for (i in a) print a[i]}' Daily_Data Master_Data 

Customer_Key,Customer_ID,Location 
"1","1001","Washington D.C" 
"2","1002","Los Angeles" 
"3","1003","Austin" 
"4","1004","San Jose" 

Referenz:Effective AWK Programming

0
awk -F, 'NR == FNR {print; id[$1]; next} !($1 in id)' Daily_Data Master_Data 
Customer_Key,Customer_ID,Location 
"3","1003","Austin" 
"4","1004","San Jose" 
"1","1001","Washington D.C" 
"2","1002","Los Angeles" 

dass zu sortieren, können Sie

awk ... | { read -r header; echo "$header"; sort -t'"' -k2,2n; } 
tun

Um diese zurück zu Master_Data zu speichern, wählen Sie eine von:

awk ... > tmp && mv tmp Master_Data 
awk ... | sponge Master_Data   # using `sponge` from `moreutils` package 
+0

Works! Vielen Dank! –

Verwandte Themen