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

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

Ich habe eine Datei, die eine Zeichenfolge wie die folgende 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 grepnach einem 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 weit wie möglich mit meinen eigenen Befehlen zu helfen. Ich bevorzuge keine neuen Befehle und Suchmethoden. Ich bin mit meinen zufrieden, muss nur ab der zweiten Spalte suchen.

Antwort1

Dies ist eine einfache Modifikation vonmeine Antwortzu deiner damit zusammenhängenden Frage:

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

Oder noch einfacher:

grep ',Level1\.2' myfile.txt

Das vorangestellte Komma im Match-String stellt sicher, dass im ersten Feld keine Übereinstimmung vorliegt.

Level1.20Wenn die Möglichkeit von oder besteht Level1.2aund Sie diese Fälle ausschließen möchten, müssen Sie ein Worttrennzeichen hinzufügen:

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

Beachten Sie, dass in keinem dieser Fälle egrep(oder grep -E) erforderlich ist.

Antwort2

-POption (PCRE) mit positivem Lookbehind verwenden :

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

verwandte Informationen