Ich habe zwei Textdateien: FileA.txt und FileB.txt.
Sie sind durch Tabulatoren getrennt.
FileA.txt enthält Datensätze auf Transaktionsebene.
FileB.txt enthält eine Referenz-/Nachschlagetabelle.
Ich möchte die Spalten „Unternehmen“ und „KATEGORIE“ in FileB.txt an FileA.txt anhängen, indem ich den Inhalt von „Unternehmen“ in FileB.txt mit „Beschreibung“ in FileA.txt abgleiche.
Zur Klarstellung: Match & Merge sollten auf der Grundlage erfolgen, ob der Inhalt für „Company“ in der Zeichenfolge in der Spalte „Beschreibung“ in FileA.txt vorhanden ist oder nicht. Für
jede Hilfe hierzu wäre ich dankbar.
DateiA.txt
Date Description Amount
1/15/2016 1231 HAMBURGER #1234 Albany NY 24186166001200699400511 -22.54
3/3/2016 EASTERN FRUIT CO S1 Trenton NJ -110.93
2/26/2016 GUMPS* PAPER INC. 999-123-4560 CA -9.99
2/16/2016 EASY BURGERS SUPPLIES 01/31 #000741643 PURCHASE FOOD S TRENTON NJ -10.97
2/19/2016 FRANKFURTER Stamford CT -14.18
2/5/2016 CHECKCARD 0141FRANK'S GROCERIES Albany NY 24071056031987159327565 -87.92
3/11/2016 WIRED PENCIL & PAPER Sacramento NJ -72.16
3/18/2016 UNDERWATER MAIL SRVC 654321 800-1234567 DC -65
1/31/2016 VOYAGER REAL ESTATE CO . 415 DES:LEASE PYMNT INDN:123 Main St. CO ID:XXXXX999 ACH -126.65
1/18/2016 CARD 0101 US BASKETWEAVING ASSOC 123-456-7890 TX 54692166432112345 -265
4/18/2016 CARD ACH #89 UNDERWATER MAIL SRVC 654321 800-1234567 DC 6787654320 -250
DateiB.txt
Company CATEGORY
HAMBURGER FOOD
FRANKFURTER FOOD
PAPER INC. OFFICE
WIRED PENCIL & PAPER OFFICE
FRANK'S GROCERIES GROC
EASY BURGERS SUPPLIES GROC
EASTERN FRUIT CO. GROC
US BASKETWEAVING ASSOC OFFICE
UNDERWATER MAIL SRVC OFFICE
VOYAGER REAL ESTATE REAL ESTATE
Antwort1
Einfache Implementierung. Nicht sicher, ob awk das beste Tool ist.
awk -F '\t' '
BEGIN {
while(getline < "fileB.txt")
fileB[$1]=$0
}
{
matched=""
for (company in fileB)
{
if ( $2 ~ company )
{
matched=fileB[company]
break
}
}
if (matched)
print $0 "\t" matched
else
print
}' fileA.txt
Dies soll Ihnen zeigen, wie Sie beginnen. Dieses Skript kann verbessert werden. Die Übereinstimmung ist nur dann zuverlässig, wenn die Eingabe sauber ist, sonst funktioniert sie nicht. Achten Sie auf Groß-/Kleinschreibung, Wörter, die durch mehr als ein Leerzeichen getrennt sind, … Es ist möglich, dass eine Zeile mit mehr als einem Unternehmen übereinstimmt. Dieses Skript erkennt dies nicht. In diesem Fall müssten Sie den Umbruch durch einen Zähler ersetzen und dann nach der Schleife testen.