端末でテキストファイルを見て、そのファイルの番号を強調表示したいと思います。で開くときに取得するのと同じですgedit
。less
、cat
または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つの便利なエイリアスv
iewとl
essiewがあります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
を使用してください。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
}
編集: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