выхлопная труба grep труба xmllint не работает - PullRequest
1 голос
/ 29 декабря 2011

Я пытаюсь заставить работать приведенную ниже команду, но o / p не печатается:

tail -f mylog.log | grep --line-buffered -Eo '<S:Envelope .+Envelope>' | xmllint --format --recover -

Однако, если я извлекаю тот же шаблон из файла и передаю его в xmllint, онработает:

grep --line-buffered -Eo '<S:Envelope .+Envelope>' tmp.xml | xmllint --format --recover -

Чего мне не хватает в первой команде?

Ответы [ 2 ]

6 голосов
/ 29 декабря 2011

Можете ли вы попробовать это (не проверено):

tail -f mylog.log | grep -Eo '<S:Envelope .+Envelope>' | while read line; do
    echo $line | xmllint --format --recover -
done

(то есть согласно гипотезе, что xmllint не находит EOF и как таковой все еще ожидает ввода)

0 голосов
/ 29 декабря 2011

Попробуйте что-то вроде этого -

grep --line-buffered -Eo '<S:Envelope .+Envelope>' <(tail -f mylog.log) &1> xmllint --format --recover -
...