2016-09-30 13 views
-1

Ich versuche, alle Zeilen in der Liste A zu löschen, die LinienBearbeitung der Inhalt einer Liste basierend auf den Inhalt einer zweiten Liste mit begrenzten Spalten

Mein Problem in der Liste B nicht übereinstimmen, ist, dass das Format von beiden Listen ist nur für die ersten 16 Spalten identisch.

Ich möchte nur die Listen von diesen ersten Spalten vergleichen, aber ich möchte in der A-Liste ist den kompletten Inhalt jeder passenden Linie halten

Beispiel Inhalte beiden Listen:

Liste A:

2009-02-07T18:54:59.010Z,-5.878,146.884,34,6.3,mwc 
2009-02-09T14:09:05.110Z,-5.902,146.967,35,5.8,mwc 
2009-02-10T07:29:33.500Z,-22.82,-68.484,103,5.7,mwc 

Liste B:

2009-02-09T14:09 
2009-02-11T09:31 
2009-02-11T13:52 

war mein erster Gedanke grep -F zu benutzen, um das zu tun, aber ich habe kein Glück. Gibt es irgendwelche Möglichkeiten, dies mit awk oder sed zu tun?

Prost.

+1

Ich würde das Feldtrennzeichen ersetzen (Komma in diesem Fall) nach dem 16. Feld in der Liste A, verwenden Sie den "Join" -Befehl, um die relevanten Zeilen aus dieser Liste zu drucken, und bringen Sie das Trennzeichen zurück. – GMichael

Antwort

0

Dies setzt voraus, dass Zeilen in Liste A in Bezug auf die ersten 16 Zeichen eindeutig sind (oder wenn Sie nicht nur die neueste drucken möchten). Wenn Zeilen in Liste B wiederholt werden, wird die Ausgabe auch die Zeile von Liste A wiederholen.

$ awk -F: 'NR==FNR{a[$1 $2]=$0; next} ($1 $2) in a {print a[$1 $2]}' a.txt b.txt 
2009-02-09T14:09:05.110Z,-5.902,146.967,35,5.8,mwc 
0

leicht genug, um mit grep, vorausgesetzt, Sie Text in der zweiten Datei an beliebiger Stelle in der Linie von dem ersten Datei übereinstimmen sollen (oder das Muster nur am Anfang auftritt)

$ cat f1 
2009-02-07T18:54:59.010Z,-5.878,146.884,34,6.3,mwc 
2009-02-09T14:09:05.110Z,-5.902,146.967,35,5.8,mwc 
2009-02-10T07:29:33.500Z,-22.82,-68.484,103,5.7,mwc 

$ cat f2 
2009-02-09T14:09 
2009-02-11T09:31 
2009-02-11T13:52 

$ grep -Ff f2 f1 
2009-02-09T14:09:05.110Z,-5.902,146.967,35,5.8,mwc 
Verwandte Themen