Показывать специальные символы в Unix при использовании команды «less» - PullRequest
67 голосов
/ 04 августа 2011

Я хотел бы знать, как просматривать специальные символы при использовании команды «меньше».Например, я хочу видеть непечатные символы со специальными обозначениями.Например, в редакторе 'vi' я использую 'set list on', чтобы увидеть символы окончания строки, представленные символом доллара '$'.Точно так же я хотел бы сделать это, используя команду «less».

Я ссылался на Unix less manual, но безрезультатно.

Ответы [ 5 ]

63 голосов
/ 04 августа 2011

less будет искать в своей среде, существует ли переменная с именем LESS

Вы можете установить LESS в одном из ~ / .profile (.bash_rc и т. Д. И т. Д.), А затем каждый раз, когда вы запускаете less из командной строки, он находит LESS.

Попробуйте добавить это

 export LESS="-CQaix4"

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

Вы можете узнать о том, что все это означает, с помощью функции справки в less, просто нажмите клавишу «h» и носитесь вокруг, или выполните меньше --help.

редактировать

Я посмотрел на помощь и заметил, что есть также опция -r

-r  -R  ....  --raw-control-chars  --RAW-CONTROL-CHARS
                Output "raw" control characters.

Я согласен, что кошка может наиболее точно соответствовать вашим заявленным потребностям.

 cat -vet file | less

Добавит «$» в конце каждой строки и преобразует символ табуляции в визуальный «^ I».

 cat --help
   (edited)
    -e                       equivalent to -vE
    -E, --show-ends          display $ at end of each line
    -t                       equivalent to -vT
    -T, --show-tabs          display TAB characters as ^I
    -v, --show-nonprinting   use ^ and M- notation, except for LFD and TAB

Надеюсь, это поможет.

52 голосов
/ 04 августа 2011

Вы можете сделать это с помощью cat и с помощью этого канала вывести результат на less:

cat -e yourFile | less

Этот отрывок из man cat объясняет, что означает -e:

   -e     equivalent to -vE

   -E, --show-ends
          display $ at end of each line

   -v, --show-nonprinting
          use ^ and M- notation, except for LFD and TAB
12 голосов
/ 14 августа 2017

Для less используйте -u для отображения возврата каретки (^M) и пробелов (^H) или -U для отображения предыдущих и вкладок (^I), например:

$ awk 'BEGIN{print "foo\bbar\tbaz\r\n"}' | less -U 
foo^Hbar^Ibaz^M

(END)

Без переключателя -U вывод будет:

fobar   baz

(END)

См. man less для более точного описания функций.

1 голос
/ 16 января 2019

В том же духе, что и https://stackoverflow.com/a/6943976/7154924:

cat -A

-A, --show-all
       equivalent to -vET
-v, --show-nonprinting
       use ^ and M- notation, except for LFD and TAB
-E, --show-ends
       display $ at end of each line
-T, --show-tabs
       display TAB characters as ^I

В качестве альтернативы или в одно и то же время вы можете перенаправить на tr замену произвольных символов на нужные для отображения, прежде чем отправлять на пейджер, например less, если это необходимо.

0 голосов
/ 04 августа 2011

Все специальные непечатаемые символы отображаются с пометкой ^ меньше. Тем не менее, перевод строки на самом деле печатается (просто создайте новую строку), поэтому не считается специальным, поэтому у вас возникнут проблемы с его заменой. Если вы просто хотите увидеть окончания строки, самый простой способ может быть

sed -e 's/$/$/' | less
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...