URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7650
[ Назад ]

Исходное сообщение
"awk и разделение полей"

Отправлено handler , 16-Окт-08 18:18 
Здравствуйте
Имеем вывод tcpdump в котором все поля идут через пробелы, кроме второго - оно отделено от третьего точкой

tcpdump -i eth0 | awk '{print $1, $2, $3}'

получаем второе и третье поле во втором

tcpdump -i eth0 |awk -F . '{print $1, $2, $3}'

получаем что все поля в строке разделяются точками а нам надо только одно поле выделить

tcpdump -i eth0 | awk $2~/.$/ '{print $1, $2, $3}'

не работает хотя в доке написано что есть выражение "$2~/a$/" - a последний символ 2-го поля

как мне отделить два поля разделенные точкой?


Содержание

Сообщения в этом обсуждении
"awk и разделение полей"
Отправлено Andrey Mitrofanov , 16-Окт-08 21:30 
>Здравствуйте
>Имеем вывод tcpdump в котором все поля идут через пробелы, кроме второго
>- оно отделено от третьего точкой
>получаем второе и третье поле во втором
>как мне отделить два поля

Ну, как-нибудь вот так -
$ echo "a b.c.x d e.f"|gawk '{sub(/\./," ",$2); $0=$0; print $1":"$2":"$3}'
a:b:c.x
$ _


"awk и разделение полей"
Отправлено phpcoder , 17-Окт-08 12:19 
>Здравствуйте
>Имеем вывод tcpdump в котором все поля идут через пробелы, кроме второго
>- оно отделено от третьего точкой

[...]
>как мне отделить два поля разделенные точкой?

Используйте ф-цию split() с точкой в качестве разделителя.


"awk и разделение полей"
Отправлено Fou , 17-Окт-08 14:36 
>как мне отделить два поля разделенные точкой?

Ещё один инструмент:
http://sed.sourceforge.net/sedfaq.html

$ echo "aaa bbb.ccc ddd eee...fff" | sed 's/\./ /'
aaa bbb ccc ddd eee...fff
$ echo "aaa bbb.ccc ddd eee...fff" | sed 's/\./ /g'
aaa bbb ccc ddd eee   fff