Verwenden Sie die -P
Option (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
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 grep
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 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.
Verwenden Sie die -P
Option (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
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.20
oder Level1.2a
gibt 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.