seth: Regex auf Ausgabe von ls -l

Beitrag lesen

gudn tach!

[0-9]{5,6}    2007-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}

statt [0-9] kann man oft auch \d verwenden (ist geschmackssache, aber auf jeden fall kuerzer).
da die anzahl der leerzeichen und die groesse variieren kann, wuerde ich jene flexibler halten:

\d+ +200\d-\d{2}-\d{2} \d{2}:\d{2}

und statt eines gewoehnlichen editors kannst du auch gleich im cli sed oder perl verwenden, also z.b.

perl -p -e "s/^\d+ +200\d-\d{2}-\d{2} \d{2}:\d{2} //" dateiname

oder noch kuerzer:

perl -p -e "s/^\d+ +200\d-\d\d-\d\d \d\d:\d\d //" dateiname

in sed waere es dann wieder mit [0-9] statt \d und die braces muessten mit back-slash maskiert werden

sed -e "s/[1]+ +200[0-9]-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2} //" dateiname

oder

sed -e "s/[2]+ +200[0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9] //" dateiname

auf diese weise wird der ersetzte kram an STDOUT uebergeben. also kann er in eine datei gepipet werden, z.b.

perl -p -e "s/^\d+ +200\d-\d\d-\d\d \d\d:\d\d //" dateiname > ersetzt.txt

und mittels des parameters -i (in perl und in sed) kann man eine in-place-ersetzung durchfuehren, d.h. es wird der kram innerhalb der datei ersetzt.

der vollstaendigkeit halber sei noch erwaehnt, dass "ls -1" (in worten: "eins" nicht die kleine version des buchstabens "L") gleich die gewuenschte ausgabe gebracht haette.

prost
seth


  1. 0-9 ↩︎

  2. 0-9 ↩︎