使用'less'命令在Unix中显示特殊字符

时间:2011-08-04 15:12:54

标签: linux unix command

我想知道在使用'less'命令时如何查看特殊字符。例如,我想看到带有特殊符号的不可打印字符。例如,在'vi'编辑器中,我使用“set list on”来查看由$''字符表示的行终止字符。同样地,我想使用'less'命令来做到这一点。

我提到Unix较少的手册,但无济于事。

6 个答案:

答案 0 :(得分:62)

less会在其环境中查看是否存在名为LESS的变量

您可以在〜/ .profile(.bash_rc等等)之一中设置LESS,然后只要从命令行运行less,它就会找到LESS。

尝试添加此

 export LESS="-CQaix4"

这是我使用的设置,嵌入的某些行为可能会让您感到困惑,所以......

你可以在less的帮助功能中找到所有这些含义,只需点击“h”键和鼻子,或者少运行 - 帮助。

修改

我查看了帮助,发现还有一个-r选项

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

我同意猫可能是最符合您所述需求的。

 cat -vet file | less

在每行末尾添加'$'并将tab char转换为visual'^ 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

我希望这会有所帮助。

答案 1 :(得分:52)

你可以用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

答案 2 :(得分:12)

less使用-u显示回车符(^M)和退格键(^H),或-U以显示前一个和制表符({ {1}})例如:

^I

如果没有$ awk 'BEGIN{print "foo\bbar\tbaz\r\n"}' | less -U foo^Hbar^Ibaz^M (END) 开关,输出将为:

-U

有关功能的详细说明,请参阅fobar baz (END)

答案 3 :(得分:1)

本着与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的寻呼机。

答案 4 :(得分:0)

所有特殊的,不可打印的字符都使用^表示法显示。但是,换行实际上是可打印的(只是换行),因此不被认为是特殊的,因此您将无法替换它。如果您只想查看行结尾,最简单的方法可能是

sed -e 's/$/$/' | less

答案 5 :(得分:0)

现在,有时您已经打开了less,并且无法在其上使用cat。例如,您做了一个| less,就不能只重新打开一个文件,因为它实际上是一个流。

如果您需要识别行尾,那么一种简单的方法就是搜索该行的最后一个字符:/.$。搜索将突出显示最后一个字符(即使它是空白),也很容易识别它。

这只会对行尾情况有所帮助。如果您需要其他特殊字符,则可以使用上面带有标记和竖线的cat -vet解决方案:

  • 在您感兴趣的文本的顶部标记:ma
  • 转到您感兴趣的文本的底部并标记它,mb
  • 回到标记 a 'a
  • 通过cat -vet a b
  • 管道,并用另一个较少的命令查看结果:|bcat -vet | less

这将打开另一个less进程,该进程显示在标记 a b 之间的文本上运行cat -vet的结果。

如果您想要整个内容,请执行g|$cat -vet | less,转到第一行并通过cat过滤所有行。

less选项相比,此方法的优势在于它不会弄乱屏幕上显示的输出。

有人认为最初发布此问题八年后,less才具有该功能...但是我什至看不到https://github.com/gwsw/less/issues上的功能请求