Как "хвостить" лог-файл по X строк за раз

Это должно работать, переключая комментарии в определенных строках, оставляя все пробелы нетронутыми.:

$ cat file
A
# B
  C

$ sed -Ei '2b1;3b1;b;:1;s/^([[:blank:]]*)#/\1/;t;s/^([[:blank:]]*[^#[:blank:]])/#\1' file

# Run the same cat again
$ !cat
A
 B
#  C

# Run the same sed again
$ !sed

# Run the same cat again
$ !cat
A
# B
  C

Добавьте b1;для каждой строки , которую необходимо переключить.
Попробуйте сначала без -iили используйте -i.bak.

(sedразветвление через)

0
21.07.2020, 22:39
4 ответа

Вы можете просмотреть последние N строк с интервалом M секунд, используя watch. Предполагая, что N=20 и M=3,

watch -n3 tail -n20 logfile.txt

Очевидно, что вы потеряете большие куски вывода, поскольку интервал обновления превышает интервал записи, но, насколько я понимаю, это то, что вам нужно.

1
18.03.2021, 23:18

Bash >= 4 имеет специальную встроенную -функциюmapfile:

tail -f logfile.txt | while mapfile -t -n 12 lines && ((${#lines[@]})); do
    clear
    printf '%s\n' "${lines[@]}"
    sleep 0.1 # Might be necessary or you won't see anything at all except the last batch of lines
done

Взято из:Чтение n строк за раз с помощью Bash .

1
18.03.2021, 23:18
tail -f logfile.txt | less

И вы можете использовать интерфейс, выделенный Гленном Джекманом, для перемещения:

  • F следовать
  • Ctrl-C для прекращения следования
  • q для выхода
  • / для поиска регулярных выражений
0
18.03.2021, 23:18

Мне нравится использовать lessдля просмотра журналов. Некоторые полезные команды less:

  • G для перехода к последней строке
  • R для обновления файла (, за которым следуетG)
  • F для слежения за файлом в реальном времени (илиtail -f):нажмите Ctrl+C , чтобы остановить слежку.
1
18.03.2021, 23:18

Теги

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