查看文本文件并突出显示数字

Atc*_*old 3 bash gedit text

我想在终端上查看一个文本文件并突出显示它的数字。当我用gedit. 我一直没能有做到这一点lesscatvim或其他观众/编辑。

PS 我的问题很简单,但我一直无法找到正确的关键字进行有意义的搜索。

DIY解决方案

方案一

匹配每个数字并突出显示,打印每一行:

egrep --colour=always '[-+]?[0-9]*[\.e]?[0-9]|$'
Run Code Online (Sandbox Code Playgroud)

我想我会简单地将其别名化。我仍然想知道是否有默认选项。

编辑:添加对指数e、tnx 的支持到@??s???。

方案B

好的,我的最终解决方案如下

grep -P --colour=always '(?:^|(?<=[\\, ;\-\+\*\/]))[-+]?[0-9]*[\.eE]?[0-9]+|$'
Run Code Online (Sandbox Code Playgroud)

它在后面寻找分隔字符或行首,并匹配大量数字格式和行尾(以便打印每一行)。

最后,两个有用的别名view 和less- view:

alias v="grep --colour=always -P '(?:^|(?<=[\\, ;\-\+\*\/]))[-+]?[0-9]*[\.eE]?[0-9]+|$'"
function lv {                                                                    
    v $1 | less -R                                                               
}
Run Code Online (Sandbox Code Playgroud)

方案C

这是一个更好的正则表达式(在解决方案 B的单引号内使用):

(?<![\w\.])[-+]?[0-9]*[\.eE]?\-?[0-9]+|$
Run Code Online (Sandbox Code Playgroud)

此解决方案考虑了任何非字母数字和点分隔符号。前一个缺乏普遍性。

编辑:添加-nTgrep显示对齐的行号。编辑 2:通过添加\-?.

TL; 博士

将此粘贴到您的文本文件中,~/.bashrc并使用v, lv,cv查看少查看列查看您的文本文件:

# Highlight numbers when displaying text files
alias v="grep --colour=always -nTP '(?<![\w\.])[-+]?\-?[0-9]*[\.eE]?[0-9]+|$'"
# Send v output to less
function lv {
    v $1 | less -R
}
# Convert CSV to TSV and send to lv
function cv {
    column -ts, $1 | lv
}
Run Code Online (Sandbox Code Playgroud)

编辑:添加 CSV 文件阅读快捷方式和评论。

αғs*_*нιη 8

也匹配 +/- 符号等e

 grep -E --color '[-+\.]?[0-9](|[eE][-+]?[0-9]|$)'
Run Code Online (Sandbox Code Playgroud)

这将匹配以下各种数字。

12345
-12345
+12345
.12345
12.345
12345.
123e45
123E45
123E+45
123E-45
123e+45
123e-45
Run Code Online (Sandbox Code Playgroud)