[Sysadmins] awk
Led
=?iso-8859-1?q?ledest_=CE=C1_gmail=2Ecom?=
Ср Июл 30 22:12:07 MSD 2008
Wednesday, 30 July 2008 19:58:05 Aleksey E. Birukov написав:
> Шилов Сергей пишет:
> > В сообщении от 30 июля 2008 Led написал:
> >> В сообщении от Wednesday 30 July 2008 12:41:05 Sergey Shilov написал(а):
> >>> В сообщении от 30 июля 2008 Aleksey E. Birukov написал:
> >>>>> Врядли. Я так понял, хотелось получить конкретный номерной match в
> >>>>> случае когда FS - regexp
> >>>>
> >>>> Да. Именно так.
> >>>
> >>> echo "aaa_bbb_ccc" | NNN=2 awk -F"_[bc]" '{ printf "field%i=%s\n",
> >>> (ENVIRON["NNN"]), $(ENVIRON["NNN"]) }
> >>
> >> "Номерной match" FS, а не field
> >
> > Эээ..., тогда "в лоб":
> > из "aaa_bbb_ccc_bad" в цикле берем в M 2-й match регэкспа "_[bc]" и
> > печатаем полученное :-)
> >
> > echo "aaa_bbb_ccc_bad" | gawk -v N=2 -- '{ i = 0 ; S = $0 ; while (
> > match(S, /_[bc]/) != 0 ) { i++ ; M = substr(S, RSTART, RLENGTH) ; S =
> > substr(S, RSTART+RLENGTH ) ; { if ( i == N ) { printf "%s\n", M ; break }
> > } }'
>
> Результат выполнения команды:
> gawk: cmd.
> line:1:
> ^ unexpected newline or end of string
>
> С ходу не "просёк" что к чему...
Перед if лишняя {
Но код, мягко говоря, "от Java-кодера" (без обид, плиз):)
--
Led
Подробная информация о списке рассылки Sysadmins