2016-04-24 9 views
0

ich eine Datei haben enthalten viele Zeilen
Ich möchte gehören grep Linien eine Zeichenfolge, die eine Variable, die diese Zeichenfolge ein uri ist wie:grep Zeilen enthalten exakte Zeichenfolge in einer Datei

/wp-admin/admin-ajax.php

I will nur Linien genauen uri enthalten grep:

/wp-admin/admin-ajax.php

und nicht extrahieren Zeilen wie diese:

/wp-admin/admin-ajax.php?blahblah

Beispiel File:

4.2.2.4 sitename.com/wp-admin/admin-ajax.php 
4.2.2.4 sitename.com/wp-admin/admin-ajax.php? 
4.2.2.4 sitename.com/wp-admin/admin-ajax.php?blah 
4.2.2.4 sitename.com/wp-admin/admin-ajax.php?blahblah 

Suche Betreff:

sitename.com/wp-admin/admin-ajax.php 

sollte wie folgt extrahieren Linien:

4.2.2.4 sitename.com/wp-admin/admin-ajax.php 

Antwort

1

Fügen Sie die Option -F grep es zu sagen, Strings zu verwenden, anstatt regexps und -x ganze Linien machen:

grep -x -F "$variable" 

die Mann-Seite.

Ihre aktualisierte Frage Gegeben:

$ awk -v tgt='sitename.com/wp-admin/admin-ajax.php' '$NF==tgt' file 
4.2.2.4 sitename.com/wp-admin/admin-ajax.php 
+0

Ich möchte nicht ganze Zeile übereinstimmen, die Suchzeichenfolge ist Teil der Zeile, aber ich möchte ganze Zeile extrahieren –

+0

Und auch die Suchzeichenfolge sollte genau sein, bedeutet 'Suche' sollte nicht 'Suche' extrahieren –

+1

Ich habe gerade aktualisiert meine Antwort auf Ihre aktualisierte Frage. –

0

Wie wäre es damit:

awk 'NR==FNR{a[$0]; next} $1 in a' pattern.txt data_file.txt 

Unter der Annahme, dass Sie Ihre Daten behalten in der data_file.txt wie:

www.sitename.com/admin/index.php 
www.sitename.com/admin 
www.sitename.com/ 
... 

Und die Dinge, die Sie in einer anderen Datei identifizieren möchten, zum Beispiel pattern.txt wie:

www.sitename.com/admin 
+0

ich Ihren Code als verrohrt verwendet: | awk 'NR == FNR {a [$ 0]; next} $ 1 in $ Variable nicht funktioniert –

+0

Oh, okay. Dann ist es noch einfacher: '| awk -vvar = $ variable '$ 0 == var'' – TasosGlrs

+1

Wenn Sie kein Leerzeichen zwischen '-v' und' var = 'eingeben, wird Ihr Code unnötig gawk-spezifisch. Hinterlassen Sie einfach ein Leerzeichen: 'awk -v var =" $ variable "'$ 0 == var' Datei '. Und denken Sie daran, Ihre Shell-Variablen immer anzugeben. –

Verwandte Themen