grep mit regexp: Leerzeichen nicht überein, es sei denn ich füge eine Behauptung

GNU-grep-2.5.4 auf bash 4.1.5(1) auf Ubuntu 10.04

Dies entspricht

$ echo "this is a     line" | grep 'a[[:space:]]\+line'
this is a     line

Aber nicht

$ echo "this is a     line" | grep 'a\s\+line'

Aber das passt zu

$ echo "this is a     line" | grep 'a\s\+\bline'
this is a     line

Ich verstehe nicht, warum #2 stimmt nicht überein (während # 1 tut) und #3 zeigt auch eine übereinstimmung. Was ist hier der Unterschied?

bei mir klappt es mit GNU grep 2.8 $ echo "dies ist eine Zeile" | grep 'a\s\+Zeile' ; echo $? dies ist eine Zeile 0
2 und 3 arbeiten nicht für mich (GNU grep-2.5.1)
Alle drei arbeiten für mich: Cygwin mit GNU grep 2.6.3
Ich bin mehr daran interessiert zu wissen, warum #2 nicht entsprechen, aber #3 hat. Eine zusätzliche null-Breite assertion (word boundary) macht solch einen Unterschied ?
Da der Fehler in grep-2.5 mal hier: [Grep white-space-Verhalten][1] [1]: stackoverflow.com/questions/4233159/...

InformationsquelleAutor abc | 2011-08-10

Schreibe einen Kommentar