Вопрос или проблема
Я использую less
для просмотра файла с множеством длинных строк. less
автоматически переносит эти строки, но когда я использую /
и n
для поиска чего-то, он показывает только первое вхождение текста в строке. Однако я хочу видеть все вхождения результата поиска в перенесенной строке.
При поиске в файле с помощью less
пейджер всегда перенаправляет вас к следующей строке, содержащей совпадение. Если у вас есть несколько совпадений в одной строке, они будут подсвечены less
(как и все остальные совпадения, видимые на текущей странице).
Если подсветки недостаточно, или если строки настолько длинные, что выходят за пределы экрана терминала, и вы хотите перейти к следующему вхождению в пределах перенесенной строки, вы можете предварительно обработать ввод, вручную складывая длинные строки. Так вы избегаете проблемы с совпадениями, которые могут быть не видны на экране из-за чрезмерной длины некоторых строк.
fold -s -w 80 input | less
Вышеуказанная команда складывает строки длиннее 80 символов на последнем пробельном символе перед тем, как передать обработанный текст в less
. В зависимости от ваших поисковых запросов в пейджере, этого может быть достаточно для удовлетворения ваших потребностей.
Ответ или решение
Когда вы используете команду less
для просмотра файлов с длинными строками, вероятность столкнуться с проблемой поиска по этим строкам возрастает. При использовании команды поиска /
, less
перемещает вас к следующему совпадению, показывая только первое совпадение на каждой строке. В случае длинных строк с многочисленными совпадениями, это может создать затруднения, так как не все совпадения будут видны на экране из-за автоматического переноса строк.
Решение проблемы: предварительная обработка
Чтобы получить возможность видеть все вхождения текста на длинной строке, вы можете предварительно обработать файл, «складывая» длинные строки с помощью утилиты fold
. Эта команда позволяет вам разбивать строки определенной длины, что делает их более удобными для просмотра и поиска. Вот пример команды:
fold -s -w 80 input.txt | less
Параметры команды:
-s
— указываетfold
делать перенос по пробелам. Это значит, что строка будет разделена на несколько строк, завершая каждую строку в ближайшем пробеле, что делает текст более читабельным.-w 80
— задает ширину линии в 80 символов. Вы можете настроить это значение, исходя из ширины вашего экрана или предпочтений.
Преимущества обработки строк
Использование данной команды позволит вам:
- Отображать все совпадения на одной строке. После предварительной обработки, когда вы выполните поиск с помощью
/
,less
выделит все совпадения, и они будут отображаться на экране без необходимости прокручивать строки. - Улучшить читабельность. Разбитые строки не будут слишком длинными, что улучшит общий опыт чтения.
- Легкость в навигации. Вы легче перемещаетесь по тексту, когда каждая логическая часть находится на своем месте.
Заключение
Вы — не одиноки в своих усилиях найти текст в длинных строках при помощи less
. Однако с использованием команды fold
вы можете существенно упростить задачу, улучшив видимость всех совпадений и общий опыт работы с текстовыми файлами. Убедитесь, что вы адаптируете параметры fold
под свои нужды, чтобы максимально эффективно использовать этот инструмент.