我想知道在使用'less'命令时如何查看特殊字符。例如,我想看到带有特殊符号的不可打印字符。例如,在'vi'编辑器中,我使用“set list on”来查看由$''字符表示的行终止字符。同样地,我想使用'less'命令来做到这一点。
我提到Unix较少的手册,但无济于事。
答案 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
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上的功能请求