* [Sysadmins] awk
@ 2008-07-29 11:25 Aleksey E. Birukov
2008-07-29 20:11 ` Sergey Shilov
0 siblings, 1 reply; 12+ messages in thread
From: Aleksey E. Birukov @ 2008-07-29 11:25 UTC (permalink / raw)
To: Sysadmins
Как вывести определенное поле в awk понятно {print($1)}. А вот как
вывести сам текст-разделитель, который подходит под заданное регулярное
выражение?
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Sysadmins] awk
2008-07-29 11:25 [Sysadmins] awk Aleksey E. Birukov
@ 2008-07-29 20:11 ` Sergey Shilov
2008-07-29 20:57 ` Led
0 siblings, 1 reply; 12+ messages in thread
From: Sergey Shilov @ 2008-07-29 20:11 UTC (permalink / raw)
To: sysadmins
В сообщении от Tuesday 29 July 2008 14:25:55 Aleksey E. Birukov написал(а):
> Как вывести определенное поле в awk понятно {print($1)}. А вот как
> вывести сам текст-разделитель,
echo "aaa_bbb_ccc" | gawk 'FS = "_" { print FS }'
из man gawk
FS variable as the field separator. If FS is a single character, fields
are separated by that character. If FS is the null string, then each
individual character becomes a separate field. Otherwise, FS is expected to
be a full regular expression.
Оно?
--
С уважением
Сергей Шилов.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Sysadmins] awk
2008-07-29 20:11 ` Sergey Shilov
@ 2008-07-29 20:57 ` Led
2008-07-30 7:16 ` Aleksey E. Birukov
0 siblings, 1 reply; 12+ messages in thread
From: Led @ 2008-07-29 20:57 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
Tuesday, 29 July 2008 23:11:12 Sergey Shilov написав:
> В сообщении от Tuesday 29 July 2008 14:25:55 Aleksey E. Birukov написал(а):
> > Как вывести определенное поле в awk понятно {print($1)}. А вот как
> > вывести сам текст-разделитель,
>
> echo "aaa_bbb_ccc" | gawk 'FS = "_" { print FS }'
>
> из man gawk
> FS variable as the field separator. If FS is a single character,
> fields are separated by that character. If FS is the null string, then
> each individual character becomes a separate field. Otherwise, FS is
> expected to be a full regular expression.
> Оно?
Врядли. Я так понял, хотелось получить конкретный номерной match в случае
когда FS - regexp
--
Led
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Sysadmins] awk
2008-07-29 20:57 ` Led
@ 2008-07-30 7:16 ` Aleksey E. Birukov
2008-07-30 9:41 ` Sergey Shilov
0 siblings, 1 reply; 12+ messages in thread
From: Aleksey E. Birukov @ 2008-07-30 7:16 UTC (permalink / raw)
To: ledest, ALT Linux sysadmin discuss
Led пишет:
> Tuesday, 29 July 2008 23:11:12 Sergey Shilov написав:
>
>> В сообщении от Tuesday 29 July 2008 14:25:55 Aleksey E. Birukov написал(а):
>>
>>> Как вывести определенное поле в awk понятно {print($1)}. А вот как
>>> вывести сам текст-разделитель,
>>>
>> echo "aaa_bbb_ccc" | gawk 'FS = "_" { print FS }'
>>
>> из man gawk
>> FS variable as the field separator. If FS is a single character,
>> fields are separated by that character. If FS is the null string, then
>> each individual character becomes a separate field. Otherwise, FS is
>> expected to be a full regular expression.
>> Оно?
>>
>
> Врядли. Я так понял, хотелось получить конкретный номерной match в случае
> когда FS - regexp
>
Да. Именно так.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Sysadmins] awk
2008-07-30 7:16 ` Aleksey E. Birukov
@ 2008-07-30 9:41 ` Sergey Shilov
2008-07-30 10:27 ` Led
0 siblings, 1 reply; 12+ messages in thread
From: Sergey Shilov @ 2008-07-30 9:41 UTC (permalink / raw)
To: sysadmins
В сообщении от 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"]) }
---
С уважением
С.Шилов
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Sysadmins] awk
2008-07-30 9:41 ` Sergey Shilov
@ 2008-07-30 10:27 ` Led
2008-07-30 15:03 ` Шилов Сергей
0 siblings, 1 reply; 12+ messages in thread
From: Led @ 2008-07-30 10:27 UTC (permalink / raw)
To: hsvhome, ALT Linux sysadmin discuss
В сообщении от 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
--
Led
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Sysadmins] awk
2008-07-30 10:27 ` Led
@ 2008-07-30 15:03 ` Шилов Сергей
2008-07-30 16:58 ` Aleksey E. Birukov
0 siblings, 1 reply; 12+ messages in thread
From: Шилов Сергей @ 2008-07-30 15:03 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
В сообщении от 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 } } }'
По мотивам
http://www.math.spbu.ru/user/rus/cluster/Doc/Library/awk_baluev/awk_bal_oglav.shtml
с учетом фигурных скобок из
http://www.ln.com.ua/~openxs/projects/man/uman024.html
---
С уважением
С.Шилов
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Sysadmins] awk
2008-07-30 15:03 ` Шилов Сергей
@ 2008-07-30 16:58 ` Aleksey E. Birukov
2008-07-30 17:17 ` Alexey Borisenkov
2008-07-30 18:12 ` Led
0 siblings, 2 replies; 12+ messages in thread
From: Aleksey E. Birukov @ 2008-07-30 16:58 UTC (permalink / raw)
To: Шилов
Сергей,
ALT Linux sysadmin discuss
Шилов Сергей пишет:
> В сообщении от 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
С ходу не "просёк" что к чему...
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Sysadmins] awk
2008-07-30 16:58 ` Aleksey E. Birukov
@ 2008-07-30 17:17 ` Alexey Borisenkov
2008-07-30 20:10 ` Sergey Shilov
2008-07-30 18:12 ` Led
1 sibling, 1 reply; 12+ messages in thread
From: Alexey Borisenkov @ 2008-07-30 17:17 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
Aleksey E. Birukov пишет:
> Шилов Сергей пишет:
>> 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
>
> С ходу не "просёк" что к чему...
Я в awk ничего не понимаю, но открыто 4 фигурных скобки, а закрыто только 3.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Sysadmins] awk
2008-07-30 16:58 ` Aleksey E. Birukov
2008-07-30 17:17 ` Alexey Borisenkov
@ 2008-07-30 18:12 ` Led
2008-07-30 20:51 ` Sergey Shilov
1 sibling, 1 reply; 12+ messages in thread
From: Led @ 2008-07-30 18:12 UTC (permalink / raw)
To: ALT Linux sysadmin discuss
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
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Sysadmins] awk
2008-07-30 17:17 ` Alexey Borisenkov
@ 2008-07-30 20:10 ` Sergey Shilov
0 siblings, 0 replies; 12+ messages in thread
From: Sergey Shilov @ 2008-07-30 20:10 UTC (permalink / raw)
To: sysadmins
В сообщении от Wednesday 30 July 2008 20:17:33 Alexey Borisenkov написал:
> Я в awk ничего не понимаю, но открыто 4 фигурных скобки, а закрыто только
Да уж. Копипаст консоль-редактор однако.
Можно одну фигурную скобку добавить или перед if - убрать.
--
С уважением
Сергей Шилов.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Sysadmins] awk
2008-07-30 18:12 ` Led
@ 2008-07-30 20:51 ` Sergey Shilov
0 siblings, 0 replies; 12+ messages in thread
From: Sergey Shilov @ 2008-07-30 20:51 UTC (permalink / raw)
To: sysadmins
> Перед if лишняя {
>
> Но код, мягко говоря, "от Java-кодера" (без обид, плиз):)
Комплимент! На Java никогда не писал.
Приведенный пример (с поправкой на скобку):
- рабочий;
- реализующий задачу "в лоб";
- умышленно избыточный для читабельности;
- однострочный для из консоли пускабельности;
- без претензии на конгениальность и академичность.
Академию на awk в студию :-)
Без awk (как на мой взгляд)
echo "aaa_bbb_ccc_bad" | grep -o _[bc] | sed -n 2p
--
С уважением
Сергей Шилов.
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2008-07-30 20:51 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-07-29 11:25 [Sysadmins] awk Aleksey E. Birukov
2008-07-29 20:11 ` Sergey Shilov
2008-07-29 20:57 ` Led
2008-07-30 7:16 ` Aleksey E. Birukov
2008-07-30 9:41 ` Sergey Shilov
2008-07-30 10:27 ` Led
2008-07-30 15:03 ` Шилов Сергей
2008-07-30 16:58 ` Aleksey E. Birukov
2008-07-30 17:17 ` Alexey Borisenkov
2008-07-30 20:10 ` Sergey Shilov
2008-07-30 18:12 ` Led
2008-07-30 20:51 ` Sergey Shilov
ALT Linux sysadmins discussion
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/sysadmins/0 sysadmins/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 sysadmins sysadmins/ http://lore.altlinux.org/sysadmins \
sysadmins@lists.altlinux.org sysadmins@lists.altlinux.ru sysadmins@lists.altlinux.com
public-inbox-index sysadmins
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.sysadmins
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git