入力()または出力()>>>
という署名された方向にI / Oデータを出力するスクリプトがあります。<<<
<<<
>>>
<timestamp> >>>>>>>>>>
loads
of
output
<timestamp> <<<<<<<<<<
loads
of
input
この出力を取得して、入力をある色で色付けし、出力を別の色で色付けしたいと思います。git diff
ファイルバージョンの色の違いに似ています。
最小限の入力(好ましくは1行)でこれを行うにはどうすればよいですか?
答え1
おそらく次のようなものがawk
あなたに役立ちます:
awk 'BEGIN{ce="\033[0m"}
/>>>/{cs="\033[1;31m"}
/<<</{cs="\033[1;32m"}
{print cs$0ce}' your.data
それは:
BEGIN {
ce = "\033[0m"
}
/>>>/ {
cs = "\033[1;31m"
}
/<<</ {
cs = "\033[1;32m"
}
{
print cs $0 ce
}
答え2
完全なシェル、端末に依存しない、セマンティックなソリューションのために、認識してtput
いるすべての端末に正しい色の変更順序を提供するために、terminfoデータベースを使用して色処理を利用する別の方法があります。
black=$(tput setaf 0)
red=$(tput setaf 1)
green=$(tput setaf 2)
yellow=$(tput setaf 3)
blue=$(tput setaf 4)
magenta=$(tput setaf 5)
cyan=$(tput setaf 6)
white=$(tput setaf 7)
off=$(tput sgr0)
echo ${red}some red text${blue} some blue text${green} and green${off} and back to normal.