インタラクティブ出力をフィルタリングする(上)

インタラクティブ出力をフィルタリングする(上)

top機能性を損なわずに、「自己更新」プログラムからの出力をフィルタリングするにはどうすればよいでしょうか?

たとえば、topの出力で自分のユーザー名を強調表示したいとします。次のようなものを使用するのが私の考えです。

top | grep --color -E "user|$"

ユーザー名が強調表示される点では確かに機能しますが、カーソルはトッププログラム内の適切な場所になく、最後の行が欠落しています。

wget (エスケープ シーケンスを使用して進行状況バーを強調表示しようとしました) や rsync などの他の対話型シェル プログラムでも同様の結果が出ました。対話型プログラムからの出力を適切にフィルター処理するにはどうすればよいでしょうか?

答え1

これが機能するかどうかはわかりません(使用したことはありません)。

grc を試してください。

http://korpus.juls.savba.sk/~garabik/software/grc.html

この投稿で、tail -f で動作を確認した例を見ました。他にも試してみることのできる方法がいくつか記載されています。

https://unix.stackexchange.com/questions/8414/how-to-have-tail-f-show-colored-output?newsletter=1&nlcode=17737|321c

HTH

少し関連のあるサンプルコードが見つかりました https://unix.stackexchange.com/questions/26313/colored-find-output

find を top に置き換え、case ステートメントを少しいじって、*bigbird*) を case (ユーザー名) にしました。スクリプトは満足のいくものではありませんでしたが、色付きの出力 (エラー メッセージも表示されました。これは、私が適当にハッキングしただけで、実際には適切にコーディングしていなかったためです) が生成されました。これは (少なくともある程度は) 概念実証のように見えます。

関連情報