文字列全体をstdoutに渡しながら、stdin内の特定の文字列を(色、太字のテキスト、または反転したバック/フォアグラウンドで)簡単に強調表示するために使用できるコマンドはありますか? building it を考えていますが、すでに存在する場合は、それを使用するだけです。いくつかの望ましい機能:
多分 RadovanGarabíkのGeneric Colouriser(grc) ?引数として設定ファイルが必要であり、正規表現で動作します。だから、完全に設定なしではありませんが、プロセスプロセス置換(<(list)
)を使用できます。そのため、manual設定なしで必ず:- )
救いの手を差し伸べる!
これは(本当に必要なときに)改善できますが、かなりうまく機能します。
$ cat >~/bin/hilight <<EOF
#!/bin/bash
while [ $# -gt 0 ]
do
COMANDO=$COMANDO's/'$1$'/\033[01;'$2$'m\033[K\\0\033[m\033[K/g\n'
shift;shift;
done
sed -e "$COMANDO"
EOF
簡単にするために、hilightは引数のペアを受け入れます(最初に一致、2番目に色)このスクリプトでは、属性は常に太字です
Man console_codes(グラフィックレンディション)を読んでカラーエスケープセキュリティを確認するか、これを試してください
for attrib in $(seq 0 12); do
for color in $(seq 30 37) $(seq 40 47) $(seq 90 97); do
printf %b " $attrib $color:\033[$attrib;${color}mhi, dudes\033[m"
done
done
これを使用すると、次のような重要な欠点があります。
$ dmesg | hilight \\[ 34 ] 34
しかし、これはまったくありません:
$ dmesg | hilight \\[ 34 ] 34 [[:digit:]] 31
[:digit:]は、以前の自殺のエスケープ秒で数字を検索するためです。
何かのようなもの:
$ cat /var/log/kern.log | hilight kernel 31 a 34 et 33
常に例外として機能します。
時間コマンドを使用して、経過時間の4倍に増加していることがわかりました。
Sedコマンドを、好きな、またはニーズに合った他のパーサー(awkなど)に置き換えることができます。
また、次のように、印刷不能文字のすべての行に一致するパターンでegrepを使用することもできます。
dmesg | egrep --color "swap|$"
clide は問題なく動作します。 EPELリポジトリから、RHEL 6.2で使用します
grep
のバージョンに色が付いている場合は、正規表現の変更を使用してgrepでテキストを強調表示し、すべての行を一致させて、何も除外されないようにすることができます。次の方法でうまくいくはずです。
<your command> |grep "highlightme\|^"
私は http://em.readthedocs.org/ を使用します。 Pythonにより、さまざまなプラットフォームに簡単にインストールできます。シンプルで問題なく動作します。
リンクで述べたように、grep --color=always
は1つのパターンに対してのみ機能します。そうは言っても、そのようなツールが存在するとは思わない。