我想知道如何在使用“less”命令时查看特殊字符。 例如,我想查看带有特殊符号的不可打印字符。 例如,在“vi”编辑器中,我使用“set list on”来查看由美元“$”字符表示的行终止字符。 同样,我想使用“less”命令来做到这一点。
我参考了Unix less手册,但无济于事。
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
我希望这有帮助。
您可以使用 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
对于
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
等寻呼机(如果需要)。
所有特殊的、不可打印的字符都在 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/上看不到它的功能请求问题
由于以上方法都不适合我,所以这是我的解决方案。 我创建了一个别名:
plain ()
{
cat $1 | sed 's/\x1b\[[0-9;]*[a-zA-Z]//g' | less
}
然后您可以使用
plain <yourfilename>
查看不带转义序列的文件。