[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Fragen zu Shell-Skripten



Hi,

Am Montag, 5. März 2012, 21:12:35 schrieb Peter Schütt:
grep "%date:" mysource | sed -e 's/.*: \(.*\)/\1/g'

So geht auf direkt auf der Kommandozeile.
Allerdings verstehe ich den regulären Ausdruck nicht so richtig.
".*: " soll "%date: " erwischen, das ist klar, aber das dahinter ist mir
nicht so klar,

".*:" matched auf eine beliebig lange Zeichenkette aus beliebigen Zeichen, die von einem ":" abgeschlossen werden, von daher auch auf "%date:", das ist richtig. () bildet in regulären Ausdrücken eine Gruppe, hier mit dem Escape-Zeichen "\", also: "\(\)". Dazwischen steht wieder ".*"; das bedeutet also eine beliebige Zeichenkette, die *nach* der ersten, gerade beschriebenen, aber innerhalb derselben Zeile steht. Unter sed (und auch vi, und...) steht nun \#, wobei # eine beliebige natürliche Zahl ist, für eine Gruppe. In dem RegEx ist nur eine Gruppe definiert, nämlich die gerade beschriebene Zeichenkette nach dem ":". Was also passiert, ist folgendes: Der RegEx sucht nach "$Zeichenkette:$nocheineZeichenkette" und ersetzt dies durch "$nocheineZeichenkette". Wenn es mehrfach pro Zeile vorkommt, dann auf der ganzen Zeile, dies bewirkt das "/g".

HTH

--
MfG Jan


Reply to: