LINUX.ORG.RU

[awk]Несколько символов в FS


0

0

Добрый вечер.
Интересно, можно ли в awk (не гнутом) использовать более одного символа в качестве field separator?
Не комбинацию из двух и более, а «x или y», т.е.
a,b c

awk '{FS=" ,"} {print $2" "$3}'

b c

Это умеет только gawk? (спрашиваю, т.к. gnu-утилиты обычно обладают большим числом функций, пусть даже и выходящих за стандарт) Его поставить возможности нету.
p.s. извините за кривую формулировку и незнание правильных терминов.

Вот что нам сообщает man по awk на OpenSolaris'е:

bash-4.0# man awk

User Commands                                              awk(1)

NAME
     awk - pattern scanning and processing language

SYNOPSIS
     /usr/bin/awk [-f progfile] [-Fc] [' prog '] [parameters]
          [filename]...

     /usr/xpg4/bin/awk [-FcERE] [-v assignment]... 'program' -f progfile...
          [argument]...

DESCRIPTION
     The /usr/xpg4/bin/awk utility is described  on  the  nawk(1)
     manual page.

...

     FS          input   field   separator   regular   expression
                 (default blank and tab)

Регулярное выражение однако.

ZFSych ()

NekoExMachina> Это умеет только gawk?

Стандарты не читал, но все мне известные реализации умеют.

sdio ★★★★★ ()

на фре тоже регексп. или ты на ней и сидишь?

$ echo "a,b c" | awk '{FS="[ ,]"} {print $2" "$3}'
b c

а вот гавку что-то не понравилось:

$ echo "a,b c" | gawk '{FS="[ ,]"} {print $2" "$3}'
c

moot ★★★★ ()
Ответ на: комментарий от moot

У gawk надо сказать BEGIN, иначе FS подействует начиная со второй входящей строки.

mky ★★★★★ ()

вопрос, насколько я понимаю по предидущим твоим вопросам, по солярису? если так, то даже в sunos 5.6 авк умеет екстендед регекспы в ИФС. там оригинальная реализация от Кернигана и ко.

val-amart ★★★★★ ()
Ответ на: комментарий от NekoExMachina

потестил. с обычным авк действительно не работает, хотя должно. с навк работает:

yunake@chiscadm02 ~ $ for s in chiscvigcfgst04 chiscspwebst01; do sudo ssh $s "uname -a && echo 'a,b c' | nawk '-F,| ' '{ print \$1, \$3 }'"; done 2> /dev/null
SunOS chiscvigcfgst04 5.9 Generic_122300-47 sun4u sparc SUNW,Sun-Fire-V240
a c
SunOS chidatscspweb01 5.10 Generic_141445-09 i86pc i386 i86pc
a c
val-amart ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.