2017-02-18 4 views
-2

Das ist, was ich habe.Regex zum Finden von genau zwei nicht aufeinander folgenden Zeichen in einer Zeile mit grep/awk

grep "\(r\)\1" file 

Wie passe ich das es zwei möglicherweise nicht aufeinander folgende r s macht Vorstellungen?

+2

Sie möchten "brüllen" aber nicht "Entschuldigung" ist das richtig? Was ist mit "Fehler"? – Sundeep

+0

Sie müssen genauer sein. Bitte [bearbeiten] Sie Ihren Beitrag, um Beispiele für das zu enthalten, was Sie abgleichen möchten, sowie Beispiele für das, was Sie NICHT abgleichen möchten. Ihr Titel ist unklar, und das gilt auch für den einzigen Satz, den Sie angegeben haben. Bitte seien Sie * spezifisch ** - wir sind hier keine Gedankenleser, deshalb können wir Ihre Gedanken nicht lesen, um zu sehen, was Sie wirklich fragen. –

Antwort

0

Regex für genau zwei nicht aufeinanderfolgende Zeichen der Suche nach (r) in einer Linie mit grep:

$ cat foo 
r 
oro 
ror 
roro 
roror 
orro 
rorro 
$ grep "^[^r]*r[^r]\+r[^r]*$" foo 
ror 
roro 
0

wenn Sie regex/grep nicht gezwungen sind, scheint awk in Klarheit und Flexibilität

$ awk '2==gsub(/r/,"r") && !/rr/' file 

liest als: genau zwei r und nicht aufeinanderfolgend. Dies setzt ein Wort pro Zeile voraus, das jedoch für mehrere Wörter pro Zeile einfach geändert werden kann.

Verwandte Themen