[OT] regex
Привет всем.
Что-то я с sed не могу объяснится:
$ ls
01-J'ysuis jamais alle.wav
02-Les joors tristes.wav
03-La Vaise d'Amelie.wav
$ ls | sed -e s/.wav$// | sed -e s/^[0-9]\{,4\}-//
01-J'ysuis jamais alle
02-Les joors tristes
03-La Vaise d'Amelie
Почему не убирает циферки с черточкой вначале имени?
Тупое
$ ls | sed -e s/.wav$// | sed -e s/^[0-9][0-9]-//
работает, но иногда бывают файлы с 3/4-значными номерами...
Доброе утро!
26 декабря 2005 22:40 | Matvey:
А вот так:
ls | sed -e s/.wav$// | sed -e "s/^[0-9]\{,4\}-//"
Работает :) И вот так тоже:
ls | sed -e s/.wav$// | sed -e s/^[0-9]\\\{,4\\\}-//
Домашнее задание - выяснить почему. :)
Хотя, я бы, наверное, сделал вот так:
$ ls
01-J'ysuis jamais alle.wav
02-Les joors tristes.wav
03-La Vaise d'Amelie.wav
111-Something Weird....mp3
somefile.zzz
$ ls | egrep -o "^[0-9]{0,4}\ *\-\ *.*\.(flac|mp3|ogg|wav)$" |
sed -r "s/^[0-9]{0,4}\ *\-\ *(.*)\.(flac|mp3|ogg|wav)$/\1/"
J'ysuis jamais alle
Les joors tristes
La Vaise d'Amelie
Something Weird...
Плюсы - защита от мусора в том же каталоге (somefile.zzz), один sed, ну и
маленький бонус в виде всяких форматов файлов. :)
Впрочем, после всего этого еще раз замечу, что в области shell я далеко не
специалист. Возможно, есть и более интересные решения. :)