Из скрипта я хочу less
вызывать файл и выводить его на консоль, а не на новый экран. Если файл достаточно короткий, чтобы поместиться на одном экране, я хочу отключить прокрутку. Если он длиннее одного экрана, я хочу иметь возможность прокручивать его, но как только я достигну дна, я хочу less
чтобы вернуть управление на консоль. Строки также должны быть обрезаны (в этом случае можно потерять конец строк за окном консоли).
Я также хотел бы выделить определенный шаблон.
Вот что я использую для аргументов:
less -SFXE -p "ccc" fileToShow.txt
Я использую -S
чтобы обрезать длинные строки, -FX
чтобы определить, содержит ли файл меньше строк, чем консоль, и распечатать весь текст на консоли без прокрутки, и -E
чтобы выйти less
когда я достиг конца файла, для случаев, когда текст длиннее консоли и мне нужна прокрутка.
Они работают хорошо, пока я не добавлю ключ -p
для выделения совпадений.
Предположим, fileToShow.txt содержит это:
aaa
bbb
ccc
ddd
eee
Без переключения шаблона я получаю это:
[evan@localhost] $ less -SFXE fileToShow.txt
aaa
bbb
ccc
ddd
eee
[evan@localhost] $
Когда я добавляю сопоставление с шаблоном, less печатает пустые строки до высоты консоли (используя тильды, чтобы показать пустые строки).
[evan@localhost] $ less -SFXE -p "ccc" fileToShow.txt
ccc
ddd
eee
~
~
~
~
~
~
~
~
[evan@localhost] $
Есть ли способ использовать ключ -p
и не показывать эти пустые строки при использовании -F
? (Примечание: строка "ccc" подсвечивается по желанию, у меня просто есть этот непреднамеренный побочный эффект.)
Моя оболочка bash 3.2.25
а моя меньшая версия - 436
. ОС это RHEL.