So starten Sie die Suche aus der zweiten Spalte mit dem Befehl grep

887
user9371654

Ich habe eine Datei, die folgende Zeichenfolge enthält:

site1.com,Level1.2 site2.com,Level1.1,Level1.0,Level1.2 site3.com,Level1.2 site4.com,Level1.2,Level1.1,Level1.0,Levelv3 siteLevel1.2,Levelv2 Level1.2,Levelv2 

Ich möchte nach grepeinem Wort suchen. Ich habe diesen Befehl verwendet:

grep -w "Level1.2" file1.txt > result.txt 

Die Ausgabe ist:

site1.com,Level1.2 site2.com,Level1.1,Level1.0,Level1.2 site3.com,Level1.2 site4.com,Level1.2,Level1.1,Level1.0,Levelv3 Level1.2,Levelv2 

Aber ich brauche grep, um die erste Spalte zu ignorieren. Ich brauche folgendes in der Ausgabe:

site1.com,Level1.2 site2.com,Level1.1,Level1.0,Level1.2 site3.com,Level1.2 site4.com,Level1.2,Level1.1,Level1.0,Levelv3 

Bitte versuchen Sie mir so gut wie möglich mit meinem eigenen Befehl zu helfen. Ich bevorzuge keine neuen Befehle und Suchwege. Ich bin zufrieden damit, dass ich nur ab der zweiten Spalte suchen muss.

0

2 Antworten auf die Frage

0
Toto

Verwenden Sie die -POption (PCRE) mit positivem Aussehen.

grep -Pw "(?<=,)Level1\.2" file.txt 

Ausgabe:

site1.com,Level1.2 site2.com,Level1.1,Level1.0,Level1.2 site3.com,Level1.2 site4.com,Level1.2,Level1.1,Level1.0,Levelv3 
0
AFH

Dies ist eine einfache Änderung meiner Antwort auf Ihre verwandte Frage:

grep '^[^,]*,.*Level1\.2' myfile.txt 

Oder noch einfacher:

grep ',Level1\.2' myfile.txt 

Das vorangehende Komma in der Übereinstimmungszeichenfolge gewährleistet, dass nichts im ersten Feld übereinstimmt.

Wenn es eine Möglichkeit für Level1.20oder Level1.2agibt und Sie diese Fälle ausschließen möchten, müssen Sie ein Wort als Trennzeichen hinzufügen:

grep ',Level1\.2\b' myfile.txt 

Beachten Sie, dass keiner dieser Fälle egrep(oder grep -E) benötigt wird.