Отправляет email-рассылки с помощью сервиса Sendsay

[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-значными номерами...

Ответить   Matvey Mon, 26 Dec 2005 21:40:16 +0200 (#494459)

 

Ответы:

Доброе утро!

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 я далеко не
специалист. Возможно, есть и более интересные решения. :)

Ответить   Roman I Khimov Tue, 27 Dec 2005 08:08:48 +0300 (#494515)

 

В сообщении от 26 декабря 2005 22:40 Matvey написал(a):

это sh интеллект проявляет. Заключайте "корявые" аргументы в
одинарные кавычки

Вы ещё с non-ascii символами не работали :-) Так что лучше
забывайте про sed и изучайте perl

Ответить   "Sergey B. Khvatov" Tue, 27 Dec 2005 10:21:11 +0300 (#494544)