ALT Linux sysadmins discussion
 help / color / mirror / Atom feed
* [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