Nun habe ich eine Datei test.txtWie mache ich Grep beim ersten Match auf einer Linie stoppen?
#test.txt odsdsdoddf112 test1_for_grep dad23392eeedJ test2 for grep Hello World test garbage
Ich möchte Strings extrahieren, die einen Raum nach ihnen bekommen haben. Ich folgenden Ausdruck verwendet und es funktionierte
grep -o [[:alnum:]]*.[[:blank:]] test.txt
Sein Ausgang ist
odsdsdoddf112 dad23392eeedJ test2 for Hello World
Aber Problem ist grep druckt alle Strings, den Raum hinter ihnen erhalten hat, wo, wie ich es auf nach dem ersten Spiel beenden möge eine Linie und dann zur zweiten Linie fortfahren.
Welchen Ausdruck soll ich hier verwenden, um es nach dem ersten Spiel zu stoppen und zur nächsten Zeile zu wechseln?
Dieses Problem kann mit gawk oder einem anderen Werkzeug gelöst werden, aber ich werde eine Lösung schätzen, die nur grep verwendet.
Bearbeiten Ich benutze GNU Grep 2.5.1 auf einem Linux-System, wenn das relevant ist.
bearbeiten
Mit Hilfe der unten angegebenen Antworten, versuchte ich mein Glück mit
grep -o ^[[:alnum:]]* test.txt grep -Eo ^[[:alnum:]]+ test.txt
und beide gaben mir die richtigen Antworten.
Jetzt überrascht mich, was ist, dass ich versuchte
grep -Eo "^[[:alnum:]]+[[:blank:]]" test.txt
als here vorgeschlagen verwenden, aber nicht bekommen, die richtige Antwort. Hier ist die Ausgabe auf meinem Terminal
odsdsdoddf112 dad23392eeedJ test2 for Hello World
Aber Kommentare von RichieHindle und Adrian Pronk, zeigt, dass sie eine korrekte Ausgabe auf ihren Systemen einsehen. Jeder mit einer Idee, warum ich auch nicht das gleiche Ergebnis auf meinem System bekomme. Irgendeine Idee? Jede Hilfe wird geschätzt.
bearbeiten
Nun scheint es, dass grep 2.5.1 einige Fehler hat wegen dem meine Ausgabe nicht korrekt war. Ich habe Grep 2.5.4 installiert, jetzt funktioniert es richtig. Einzelheiten finden Sie unter this link.
Ich habe Ihren Befehl in mein Terminal kopiert, aber genau das gleiche Ergebnis erhalten. –
@ andrew-dufresne: Gibt es etwas Seltsames an deiner Textdatei? Probiere 'od -c test.txt' Gibt das die Charaktere an, die du erwartet hast? – RichieHindle
@RichieHindle: Vielen Dank für Ihre schnelle Antwort, ich schätze es sehr. Ich ausgeführt, um den Befehl und bekam die gleichen Zeichen wie in der test.txt –