Скрипт:
tail -f file | sed -n -e 's/.*aaa\(qq.*HH)@blbla$/\1/p'
выводит в столбик слова, например,
ssss
vvvv
eeee
sasss
eee
4444
vvvvДальше так:
tail -f file | sed -n -e 's/.*aaa\(qq.*HH)@blbla$/\1/p' | awk '{print$1}'
ничего не выводит, а надо.
В чем тут грабли?
... awk '{print$1}'
может пробела не зватает ??
'{print $1}'
>... awk '{print$1}'
>может пробела не зватает ??
>'{print $1}'Нет, тоже самое.
Не совсем понятно, если и так получается один столбик, то зачем awk?
>Не совсем понятно, если и так получается один столбик, то зачем awk?Планируется еще много чего в самом awk, т.е. мне главное получить значение от предыдущей команды и передать его в awk для дальнейшей обработки.
for ((i=1;i<5;i++)); do echo $i;done | awk '{print $1}'
1
2
3
4
>for ((i=1;i<5;i++)); do echo $i;done | awk '{print $1}'
>1
>2
>3
>4Ага, можно еще проще,
echo 1 | awk '{print $1}'
1Тут чего-то не так с sed'ом.
tail -f file | sed -n -e 's/.*aaa\(qq.*HH)@blbla$/\1/p' 2>&1 | awk '{print $1}'
будет работать?
>tail -f file | sed -n -e 's/.*aaa\(qq.*HH)@blbla$/\1/p' 2>&1 | awk '{print $1}'
>будет работать?Увы, тоже нет.
>Увы, тоже нет.Будет интересно узнать из-за чего же всё-таки такая нереальная байда получается
>Тут чего-то не так с sed'ом.Скорее всего дело в буферизировании вывода. Если данные, поступающие на вход, закончатся (EOF), то он должен всё выдать. В противном случае он будет выдавать данные порциями, когда буфер заполнится. По крайней мере мой sed так себя ведёт. В новых версиях GNU sed на этот случай есть опция -u. man sed:
...
-u, --unbufferedload minimal amounts of data from the input files and flush the
output buffers more often
...
sed version 4.1.4 December 2005 SED(1)
>Скорее всего дело в буферизировании вывода...Круто.
Спасибо.