Анализ файла дампа ядра redhat 7.0

grepвыводит строки , которые соответствуют шаблону, поэтому он не может ничего вывести до полной строки (или конца -файла -, после чего, если последняя строка была не завершается, поведение зависит от реализации ).

Так в:

(echo -n foo; sleep 1; echo bar) | grep.

Это не потому, чтоechoбуферизует свой вывод . Это не так. Как это могло случиться, когда оно прекратилось? Это потому, что grepждет конца очереди (, которая придет,сразу же следует конец -файла -со вторымecho).

Чтобы сделать то, что вы, кажется, хотите, вам нужно прочитать строки с тайм-аутом для каждой строки, например (сbash):

(echo -n foo; sleep 1; echo bar) |
  while true; do
    TMOUT=0.1 IFS= read -r line; ret=$?
    if [ "$(kill -l "$ret")" = ALRM ]; then
      [ -n "$line" ] || continue
      ors=
    elif [ "$ret" -eq 0 ]; then
      ors=$'\n'
    elif [ -z "$line" ]; then
      break
    fi
    [[ $line =~. ]] && printf %s "$line$ors"
  done

(вы получаете проход в цикле по крайней мере каждые 0,1 секунды ).

0
11.11.2019, 01:40
0 ответов

Теги

Похожие вопросы