[awk] read input

krishtaf

как в awk считать результат, выданный на стандартный выход shell-командой ?
есть функция system(cmd) - но она возвращает статус исполнения cmd, а хочется чтобы возвращала строку вывода.
Есть ли такие возможности в awk ?

evgen5555

А стандартно - подменить stdout своим мерзопакостным хэндлером и считывать всё оттуда read-ом - не получится?

krishtaf

и как ты это напишешь ?

evgen5555

Я, если честно, в awk не разбираюсь. Я бы перенаправил вывод с программы в файл в /tmp/, а затем его аккуратно бы скушал.

sergey_m

Не читая доков приходит такая идея: system( cmd | awk { продолжение программы } ).

krishtaf

а что будет тогда с переменными типа $0,$1 и т.д. ?

Marinavo_0507

А тут кроме Контры кто-нибудь знает awk?

Marinavo_0507

а, вспомнил
ну вот надо ждать отцов
или переписать скрипт на perl

krishtaf

так и сделал

krishtaf

кстати, как то давно(когда 5.0-RELEASE вышел) слышал что perl-а не будет в world-е FreeBSD и что вместо него будет использоваться awk/gawk/sed(ну т.е. в скриптах всяких)
И типа это все от того, что perl разросся и его тяжело поддерживать как часть world.
Что с такими планами стало и были ли таковые вообще ?

sergey_m

> Что с такими планами стало и были ли таковые вообще ?
Планы давно приведены в исполнение.
> И типа это все от того, что perl разросся и его тяжело поддерживать как часть world.
Ему там не место. Он там был из-за того, что от него многое зависело. Как только все зависимые части убрали, то убрали и perl.

spirinale

как в awk считать результат, выданный на стандартный выход shell-командой ?
awk '{
"echo qqnale" | getline q
print q
}'
значение переменной q будет "qqnale"
//Kirill

krishtaf

хм
и ставится отдельно как порт ? что-то я уже не помню как перл у меня на машине появился
если как отдельный порт, то апдейтить его не так просто как обычный порт ?

spirinale

да, я заметил мелькание xxxxx.awk, когда пятую поставил
awk/gawk/sed
кто-нибудь знает функциональность sed-a, чтобы аналогичной не было в awk-e/gawk-e?

krishtaf

по мне - так они братья-близнецы

spirinale

не, близнецами они не могут быть:
если я не ошибаюсь, то sed вообще не умеет работать с tcp\udp\raw сокетами и отсутствует возможность создания двусторонних pipe-ов

sergey_m

> и ставится отдельно как порт ? что-то я уже не помню как перл у меня на машине появился
Наверное в pkg_info он у тебя есть
> если как отдельный порт, то апдейтить его не так просто как обычный порт ?
Так же просто.

krishtaf

> и ставится отдельно как порт ? что-то я уже не помню как перл у меня на машине появился
Наверное в pkg_info он у тебя есть
> если как отдельный порт, то апдейтить его не так просто как обычный порт ?
Так же просто.
это я уточню
просто помню что в /etc нужно файлик править при обновлении чтобы свежий perl стал системным.

krishtaf

просто помню что в /etc нужно файлик править при обновлении чтобы свежий perl стал системным.
беру свои слова обратно
а зачем make знать про версию perl и прочее ?

sergey_m

> а зачем make знать про версию perl и прочее ?
Что билдить perl-зависимые порты.
Оставить комментарий
Имя или ник:
Комментарий: