LINUX.ORG.RU

параметры alias'а и awk


0

0

есть алиас вида 'flow-cat $1 | flow-stat -f30 -n -S2 | tail -n +13 | awk -f ~/flow-tools/format.awk'

в format.awk вот что -

{
u="Kb";
v=$3/1024;
if (v>1024) {v=v/1024; u="Mb"}
if (v>1024) {v=v/1024; u="Gb"}
printf "%-12s%.2f\t%s\n", $1,v,u
}

проблема в том при запуске showtraf /var/netflows/2007-09/ awk говорит что, awk: /home/cfa/flow-tools/format.awk:8: fatal: file `/var/netflows/2007-09/' is a directory<br>
если вместо $1 в алиас поставить просто нужный путь, то все работает. почему awk воспринимает параметр из алиаса как значение поля? че делать?


Твой алиас не верно написан.
Алиасы не умеют подставлять параметры в команду, т.о. $1 здесь имеет "случайное значение"

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

>Алиасы не умеют подставлять параметры в команду, т.о. $1 здесь имеет "случайное значение"

Правильно, и фактически выполняется команда:

flow-cat $1 | flow-stat -f30 -n -S2 | tail -n +13 | awk -f ~/flow-tools/format.awk /var/netflows/2007-09/

Так что, CFA, читай man bash. И напиши обычный скрипт. И вызывай его через alias, если уж на то пошло :)

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

Проще переписать сей альяс как функцию.

Типа:

superpuper () { 
 flow-cat $1 | flow-stat -f30 -n -S2 | tail -n +13 | awk -f ~/flow-tools/format.awk
}

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

>>Проще переписать сей альяс как функцию.

Спасиба, действительно, то что надо

CFA
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.