【发布时间】:2011-10-20 02:40:41
【问题描述】:
我想知道如何在使用“less”命令时查看特殊字符。例如,我想查看带有特殊符号的不可打印字符。例如,在“vi”编辑器中,我使用“set list on”来查看由美元“$”字符表示的行终止字符。同样,我想使用“less”命令来做到这一点。
我参考了 Unix 少手册,但无济于事。
【问题讨论】:
我想知道如何在使用“less”命令时查看特殊字符。例如,我想查看带有特殊符号的不可打印字符。例如,在“vi”编辑器中,我使用“set list on”来查看由美元“$”字符表示的行终止字符。同样,我想使用“less”命令来做到这一点。
我参考了 Unix 少手册,但无济于事。
【问题讨论】:
less 将在其环境中查看是否存在名为 LESS 的变量
您可以在您的 ~/.profile(.bash_rc 等)之一中设置 LESS,然后无论何时您从命令行运行 less,它都会找到 LESS。
尝试添加这个
export LESS="-CQaix4"
这是我使用的设置,其中嵌入了一些行为可能会让您感到困惑,因此您可以从less 的帮助功能中了解所有这些行为的含义,只需点击“h”键和鼻子周围,或运行less --help。
编辑:
我查看了帮助,发现还有一个-r 选项
-r -R .... --raw-control-chars --RAW-CONTROL-CHARS
Output "raw" control characters.
我同意cat 可能最符合您的需求。
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
我希望这会有所帮助。
【讨论】:
man ascii 会本机携带该信息,但必须查看 man-ascii.com 并单击底部行中的“名称与字符”按钮以显示 ^M 版本在表中。我认为该版本的起源是在古代 unix 文档中,甚至早于 Unix,作为控制电传打字机的许多控制字符。 (我自己从未见过;-))。祝你好运。
你可以用 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
【讨论】:
cat -eT yourfile | less 如果您想查看制表符。
cat -et yourfile | less,它应该可以工作
对于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。
【讨论】:
本着与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 这样的寻呼机(如果需要)。
【讨论】:
tr -c '[:print:]\r\n' '.'
所有特殊的、不可打印的字符都使用 ^ 符号在 less 中显示。然而,换行实际上是可打印的(只是换行),所以不被认为是特殊的,所以你在替换它时会遇到问题。如果您只想查看行尾,最简单的方法可能是
sed -e 's/$/$/' | less
【讨论】:
现在,有时你已经打开了less,你不能在上面使用cat。例如,你做了一个| less,你不能只是重新打开一个文件,因为它实际上是一个流。
如果您只需要识别行尾,一种简单的方法是搜索行中的最后一个字符:/.$。搜索将突出显示最后一个字符,即使它是空白的,也很容易识别。
这只会对行尾情况有所帮助。如果需要其他特殊字符,可以使用上面的cat -vet解决方案,带标记和管道:
ma
mb
'a
cat -vet从a到b的管道并在另一个less命令中查看结果:|bcat -vet | less
这将打开另一个less 进程,显示在标记a 和b 之间的文本上运行cat -vet 的结果。
如果您想要全部内容,请改为使用g|$cat -vet | less,转到第一行并通过cat 过滤所有行。
与less 选项相比,此方法的优势在于它不会与您在屏幕上看到的输出混淆。
有人会认为,在这个问题最初发布八年后,less 将拥有该功能......但我什至在https://github.com/gwsw/less/issues 上都看不到它的功能请求
【讨论】: