2016-08-08 11 views
1

nicht übereinstimmen Ich habe die folgende Beispieldatei und regulären Ausdruck.Regex konnte mit {M, N} auf SunOS

testing.txt

testing     aa 
a bc de 
e      aa 
ba      Z 
testing     bb 
testing     ac 

mein regulärer Ausdruck egrep

egrep '[ ]{2,}' testing.txt 

Den oben regulären Ausdruck versucht zusammenhängende weiße Flächen in einer Linie zu finden. Das zurückgegebene Ergebnis ist jedoch leer.

Der unten stehende regulartion Ausdruck funktioniert für 1 oder mehr Räume. Aber das ist nicht was ich will.

egrep '[ ]+' testing.txt 
+0

Welche Version von egrep verwenden Sie? 'egrep --version' –

+0

Gibt es überhaupt Leerzeichen? Versuchen Sie, dem Klammerausdruck eine Registerkarte hinzuzufügen. –

+0

egrep --version gibt mir ungültige Syntax. – Mox

Antwort

0

Wenn Ihr System alt ist, this help reference könnte das Problem sein beschreiben:

Traditionelle egrep nicht unterstützen die { metacharacter und einige egrep Implementierungen unterstützen \{ statt, so sollten portable Skripte vermeiden { in egrep-Mustern und sollte [{] verwenden, um einen Literal { zu entsprechen.

Das bedeutet, dass - wenn grep '[ ]\{2,\}' testing.txt nicht funktioniert - Sie sind besser dran mit Perl oder GNU grep zu erreichen, was Sie wollen.

Auch scheint egrep '[ ][ ]+' testing.txt ein Workaround nur in der aktuellen Situation zu sein, und wird nicht skalieren, aber es wird Ihnen sicher vorläufig helfen.

+1

ya leider, es ist der Server des Unternehmens haha, also habe ich keine Kraft zu aktualisieren ... – Mox

Verwandte Themen