DIYソリューション

DIYソリューション

端末でテキストファイルを見て、そのファイルの番号を強調表示したいと思います。で開くときに取得するのと同じですgeditlesscatまたはvim他のビューア/編集者と一緒にこれを行うことはできません。

PS:私の質問は簡単ですが、意味のある検索に適したキーワードを見つけることができません。

DIYソリューション

プランA

各番号を一致させ、強調表示して各行を印刷します。

egrep --colour=always '[-+]?[0-9]*[\.e]?[0-9]|$'

ただエイリアスを与えればいいと思います。デフォルトのオプションがあるかどうかを知りたいです。

編集:e@αГsнιιにexponential、tnxのサポートを追加しました。

プランB

まあ、私の最終的な解決策は次のとおりです。

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

次の区切り文字または行の先頭を探して、多くの数値形式と行の終わりと一致します(すべての行が印刷されるように)。

最後に、2つの便利なエイリアスviewとlessiewがありますv

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

プランC

より良い正規表現は次のとおりです(一重引用符で使用)。プランB):

(?<![\w\.])[-+]?[0-9]*[\.eE]?\-?[0-9]+|$

この解決策は、英数字以外の点で区切られた記号をすべて考慮します。電子アイテムは普遍性が不足しています。

編集:ソートを表示する-nTために行番号を追加しましたgrep。 Edit2:を追加して負の指数を説明します\-?

長い話を短く

これをあなたのに貼り付け、、、~/.bashrcを使用してください。vlvcvより視野が少ない列を見るテキストファイル:

# 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
}

編集:CSVファイルの読み取りショートカットとコメントを追加しました。

答え1

+/-記号の合計にも一致しますe

 grep -E --color '[-+\.]?[0-9](|[eE][-+]?[0-9]|$)'

これは以下のさまざまな数字と一致します。

12345
-12345
+12345
.12345
12.345
12345.
123e45
123E45
123E+45
123E-45
123e+45
123e-45

答え2

そしてvim

:syn on
:syn match Number '\v[-+]?\d*\.?\d+([eE][-+]?\d+)?'

数字だけが必要な場合(少なくともこの形式の数字には、0x123、1,23、0x1ap-2、VII、1,000,000、...)強調表示を追加することもできます。さまざまな言語で提供される多くの構文の強調表示vimも、その言語が理解している数字を強調表示します。

以下を行う場合:

grep -F '[eE' /usr/share/vim/vim*/syntax/*

科学表記が強調表示されている言語を含む、任意の形式で数字を持つすべての言語を表示できますvim

また、どのような状況でこれらの数字を強調表示できるかを決定することもできます。たとえばls.1、、、、PS11+21を-1-強調表示する必要がありますか?強調しなければならないでしょ1e22e31e2e3

答え3

他の可能性:

Colorize, color text

        0) reset-no-color (local), Emits sequence to remove (stray) color
           echo -e "\[\033[0;00m\]"

        1) coforma (local), color for match, add specified color for pattern
           matches

        2) coteli (local), insert ANSI color codes around line blocks,
           COlor TExt LInes

        3) spc, "supercat", colorize and print to standard output,
           general (but therefore complex) rules for coloring.
           Found in Debian repository and at:
           https://github.com/tanderson92/supercat

        4) ansifilter, convert color codes, etc., to HTML, BBcode, others
           http://www.andre-simon.de/

        5) my-highlight (local)
           http://unix.stackexchange.com/questions/46562/how-do-you-colorize-only-some-keywords-for-a-bash-script

        6) my-hilite (local)
           http://unix.stackexchange.com/questions/46562/how-do-you-colorize-only-some-keywords-for-a-bash-script

        7) hh, easy highlighting, wrapper around ack
           https://github.com/paoloantinori/hhighlighter

        8) pygmentize, parse and colorize program source file
           In Debian package python-pygments

たとえば、次のように実行しました。

spc data1

設定ファイルは .sprcc です。

Cyan                 cya     t ([0-9]+)

取得するには:

Mike Brady 2
Carol 3.1415 Brady
77 Greg Brady
Marcia Brady

ターコイズの数字 - 申し訳ありません。フォーラムでBBCodeやHTMLで色をレンダリングする方法がわかりません。または… - ご提案いただきありがとうございます。

頑張って...乾杯、drl

関連情報