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

おすすめ記事