2016-06-10 13 views
-1

Ich benutze Cygwin für Windows in awk Code, ich bin eigentlich sehr neu in dieser Sprache. Ich habe einen kleinen Liner geschrieben, um die ganze Zeile auszudrucken, wenn sich in einem bestimmten Feld eine bestimmte Zeichenfolge befindet.Suche nach bestimmten Zeichenfolge in einem Feld in awk

$ awk -F '[:,]' '{if($9 == "QueCmd0") print $0 }' #QueCmd0 is the name of the string. 

Die ":" und "," sind Feldtrennzeichen.

Und der Code funktioniert gut für kleine Textdateien (bis zu 6-7MB oder so), aber dieser Code zeigt keine Ausgabe, wenn die .TXT-Datei groß ist (etwa 10-15MB). Ich weiß nicht, wo das Problem liegt. Bitte helfen Sie mir, wenn es etwas gibt, was ich wissen sollte.

Dank im Voraus

+3

Auf einer Nebenbemerkung, Ihr Skript, wenn äquivalent zu "$ 9 ==" QueCmd0 "". So funktionieren Blöcke in 'awk'. – Bernhard

+1

Können Sie die Frage mit einer Beispielzeile aus dem gesamten Protokoll aktualisieren? – Inian

+1

'awk' funktioniert bei großen Dateien genauso gut wie bei kleinen Dateien. Wie Inian sagt, müssen Sie eine oder mehrere Zeilen aus der großen Datei anzeigen, die Ihrer Meinung nach gedruckt werden sollte, aber nicht. Nachdem Sie diese Zeilen ausgewählt haben, können Sie auf [Bearbeiten] (http://stackoverflow.com/posts/37742363/edit) klicken und sie zur Frage hinzufügen. – John1024

Antwort

0
awk -F '[:,]' '{if($9 == "QueCmd0") print $0}' 
awk -F '[:,]' '{if($9 == "QueCmd0") print}' 
awk -F '[:,]' '$9 == "QueCmd0" {print}' 
awk -F '[:,]' '$9 == "QueCmd0"' 

Es gibt nichts in einem größeren Dateien eigen ist, die awk führt zum Scheitern verurteilt,
das os Sie verwenden, dass ich nicht bürgen kann.

vielleicht möchte es eine kürzere Version?

+0

Ja, das Problem ist aufgetreten, weil der Text in Unicode codiert wurde, was bei Änderung in UTF-8 funktioniert – pr21196