Потребовалось вырезать кусок строки в bash, и в очередной раз возник вопрос - верно ли я понимаю, что awk не умеет такое?
Т.е. мне хотелось бы из строки mpc, скажем "#52) home/serzh/music/NUMBREED/danny howells_NUBREED 002/cd 2/01 16b - escape.mp3", получить номер 52. Возможно ли это сделать без sed, одним лишь awk или же он не умеет захватывать кусок строки в переменную как, скажем, Perl?
Часть строки средствами awk
Модератор: Bizdelnick
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
-
elide
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
Re: Часть строки средствами awk
не верно.верно ли я понимаю, что awk не умеет такое?
Код: Выделить всё
elide@rebirth| ~ >> echo '#52) home/serzh/music/NUMBREED/danny howells_NUBREED 002/cd 2/01 16b - escape.mp3' | awk -F'[#)]' '{print $2}'
52
elide@rebirth| ~ >>слава роботам!
-
Bolverk
- Бывший модератор
- Сообщения: 1571
- ОС: Cygwin
Re: Часть строки средствами awk
cut покрути
-
Бодрый и Веселый
- Сообщения: 66
- ОС: What?
Re: Часть строки средствами awk
offtopic:
awk умеет всякое и его синтаксис адски похож на чистый C. Вот, например, интерпретатор lisp на awk.
awk умеет всякое и его синтаксис адски похож на чистый C. Вот, например, интерпретатор lisp на awk.
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Часть строки средствами awk
Нэ повэришь... Читаю иногда. Но там ни слова нет про доступ к захваченным участкам регэкспа. Ты привел не совсем то. Оно будет работать, но вопрос не в том, как решить частный случай, который я привел - его я и седом уже решил - меня интересовало примерно следующее, как в Перле: "$1 ~ /^#\d+\).*$/ print $reg1",.. Возможно ли такое в awk - судя по приведенным ответам и факам - увы, нет.elide писал(а): ↑14.01.2007 01:03не верно.верно ли я понимаю, что awk не умеет такое?говорят, иногда бывает полезно читать man...Код: Выделить всё
elide@rebirth| ~ >> echo '#52) home/serzh/music/NUMBREED/danny howells_NUBREED 002/cd 2/01 16b - escape.mp3' | awk -F'[#)]' '{print $2}' 52 elide@rebirth| ~ >>
P.S.: упс, прошу прощения, изначальный вопрос поставил криво - т.е. на деле интересовало не решение частного случая для MPD, именно возможность захвата куска строки через регекспы примерно, как в Перле.
-
elide
- Бывший модератор
- Сообщения: 2421
- Статус: Übermensch
- ОС: лялих
Re: Часть строки средствами awk
Код: Выделить всё
elide@rebirth| ~ >> echo '#52) home/serzh.....mp3' | awk '{ if(match($0, /#([0-9]+)\)/ ,a)) print a[1] }'
52
elide@rebirth| ~ >>слава роботам!
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: Часть строки средствами awk
elide, сэнкс - именно это я хотел узнать, но не мог найти.