Альтернатива `wc -l`, которая отображает количество строк по мере их получения.

Войдите в систему как пользователь root, затем откройте терминал и введите hp-setup, после чего просто следуйте инструкциям.

3
15.02.2020, 18:32
3 ответа

Вот решение, использующее Ruby.

count_linesпечатает (черезstderr)максимум каждые полсекунды количество строк, полученных до сих пор, и общее количество в конце (черезstdout).

read -d '' make_lines <<'EOF'
  STDOUT.sync = true
  [0.2, 0.1, 0.5, 0.1, 0.6, 0.1, 0.3, 0.1, 0.3, 0.01, 0.01].each do |t|
    puts
    sleep t
  end
EOF

read -d '' count_lines <<'EOF'
  lines = 0
  t = 0
  while gets do
    lines += 1
    now = Time.now.to_f
    if now - t > 0.5
      warn lines
      t = now
    end
  end
  puts lines
EOF

ruby -e "$make_lines" | ruby -e "$count_lines"
2
28.04.2021, 23:23

Большинство терминалов принимают CR (\r)за "Переместить в столбец 1". Это позволяет вам продолжить -запись предыдущего вывода.

Это сценарий dwc, который будет читать из стандартного ввода (, который может быть tail -fиз файла или из подстановки выходного процесса ). В скрипте есть образец тестовой кровати -.

Требуется опция -l. По умолчанию номер входной строки печатается в текущей строке терминала в виде шести цифр. С -lон также печатает первые 60 символов последней полученной строки, очищая любой предыдущий текст. Когда он видит EOF, он выводит новую строку, поэтому подсказка появляется под последним выводом.

#! /bin/bash

#.. dwc [-l]

AWK_SHORT='
BEGIN { Fmt = "\r%6d "; }
{ printf (Fmt, NR); }
END { printf ("\n"); }
'

AWK_LONG='
BEGIN { Fmt = "\r%6d  %.60s"; Clr = sprintf ("%60s", ""); }
{ printf (Fmt, NR, $0 Clr); }
END { printf ("\n"); }
'
    if [[ "${1}" = "-l" ]]; then
        awk "${AWK_LONG}"
    else
        awk "${AWK_SHORT}"
    fi

    exit

    #.. Test method.
    man ls | head -n 40 |
         while IFS='' read X; do
             printf '%s\n' "${X}"; sleep 0.75
         done |
         tee >(./dwc -l ) > foo.txt
0
28.04.2021, 23:23

Думаю, вы ищетеpv(Вид трубы):

seq 100000000000 | pv -l | wc -l
2
28.04.2021, 23:23

Теги

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