2016-05-03 10 views
1

Ich muss diese Zeichenfolge in einer Datei finden:grep Variable string in der Datei

200 https://www.example.example 

Der Wert 200 ist randomic, ich jeden HTTP-Return-Code (ex 200, 301, 404 etc ... etc) finden müssen

Wie kann ich nur diese Zeichenfolge mit Return-Code-Variable grep (Ich möchte nicht jeden Return-Code in Grep-Befehl angeben)?

cat file.txt | grep "*** http*" 

Aber es funktioniert nicht.

+1

Nicht wirklich sicher, was du bist frage hier. Versuche [ask] zu lesen und stelle [mcve] bereit, damit wir es besser verstehen können. Es ist wichtig, einen relevanten Eingang und die gewünschte Ausgabe bereitzustellen. – fedorqui

+0

Was ist nur mit den ersten 3 Zeichen jeder Zeile? – Martin

+0

'grep" *** http * "' ist nicht in der Nähe der gewünschten Regexp. Sie sollten eine Art Regexp Tutorial finden, wenn Sie versuchen werden, irgendwelche Werkzeuge zu verwenden, die regexps verwenden (grep, sed, awk, perl, ruby, etc ....). –

Antwort

8

Sie möchten also jede Zeile mit einer dreistelligen Zahl beginnen, gefolgt von "http"?

grep -E '^[0-9]{3} http' file.txt 

Präzisere wie fedorqui (danke) vorgeschlagen würde dies:

grep -E '^[1-5][0-9]{2} http' file.txt 

Dies entspricht Zahlen im Bereich von 100 bis 599, die in den Bereich von HTTP-Statuscodes näher ist.

+3

Wahrscheinlich ist '^ [1-5] [0-9] {2}' genauer, da es sich um einen [HTTP-Statuscode] handelt (https://en.wikipedia.org/wiki/List_of_HTTP_status_codes). – fedorqui

+0

Hallo, ja stimmt, danke für Ihre Verfügbarkeit – Luca

0

Zuerst brauchen Sie cat mit grep nicht. Es kann ein Dateiargument selbst nehmen.

Sie können dies tun:

grep '^[1-5][0-9]\{2\}[[:blank:]]\+http' file.txt 

Dies wird Ihnen jede Zeile erhalten, die mit Ihren Kriterien entsprechen.

Wenn Sie nur die Rückgabecodes möchten, können Sie einen anderen grep ausführen oder andere Befehle verwenden, zum Beispiel mit cut:

grep '^[1-5][0-9]\{2\}[[:blank:]]\+http' file.txt | cut -d ' ' -f1 

und mit grep,

grep '^[1-5][0-9]\{2\}[[:blank:]]\+http' file.txt | grep -o '^[0-9]\+'