2017-02-14 9 views
1

私が行うときには、svn upの出力は平均で~100行です。加えて、〜30秒間更新するX-teenの外観があります(2〜3秒ごとにポップアップします)。実行時のシェル出力の色づけ方法

私はこの出力をより明瞭に見ることができるように(多分変換して)色づけすることを考えました。

私はこれを行うにはsedを使うことができると知っていますが、厄介な形式の正規表現が必要です。エスケープ文字がたくさんあります。
perlは、よりきれいな正規表現を必要としますが、出力を印刷する前に入力全体を待っています。何も得られず、BAM全体の出力が一度に表示されます。

up.sh

#!/bin/bash 

svn up [email protected] \ 
    | grep -vE "^\s*$|revision" \ 
    | ${arhbin}/coloring/svn.sh \ 

$ {arhbin}はどのように私は正規表現のようなPerlの/ Pythonのを使用して、実行時におけるコマンドの出力を色付けすることができます

#!/bin/bash 
source ${arhbin}/coloring/color_definitions.sh 

cat \ 
    | perl -pe 's/(^ *A.*$)/'$GREEN'\1'$NORMAL'/igs' \ 
    | perl -pe 's/(^ *D.*$)/'$RED'\1'$NORMAL'/igs' \ 
    | perl -pe 's/(^ *C.*$)/'$RED_BG'\1'$NORMAL'/igs' \ 
    | perl -pe 's/(^ *[?].*$)/'$BLUE'\1'$NORMAL'/igs' \ 
    | perl -pe 's/(^ *G.*$)/'$BLUE'\1'$NORMAL'/igs' \ 

を/coloring/color_definitions.sh?

+0

あなたはLinuxですか? – hek2mgl

+1

私は何もバッファされていないことを確認することから始めます。 – simbabque

+0

@ hek2mglはい、正確な赤い帽子 –

答えて

1

Linuxでは、stdbufを使用して、ioバッファリングを調整できます。このように:

stdbuf -oL svn up "[email protected]" | perl ... 
+1

素晴らしい、 'stdbuf'は私が必要としていたものです。ありがとうございます。 これは実際の作業ソリューションです: 'svn up $ @ | stdbuf -oL grep -vE "^ \ s * $ | revision"(...) ' –

+0

あなたを助けてくれてうれしい! – hek2mgl

関連する問題