ファイルの内容の色を条件付きに変更しようとしています。私のファイルは次のとおりです
A B C D
Value Value Value Value
Value Value Value Value
Value Value Value Value
Value Value Value Value
私のコマンドはcat file4 | sed "s,.*,${esc}[33m&${esc}[0m,"
であり、論理は次のとおりです。
- ファイルを分類し、sedコマンドを使用してANSIカラーコードを使用してコンテンツの色を編集します。
ただし、このファイルを実行すると、生成されたファイルは期待どおりに表示されません。
[33mA B C D[0m
[33mValue Value Value Value [0m
[33mValue Value Value Value [0m
[33mValue Value Value Value [0m
[33mValue Value Value Value [0m
希望の出力:
- フィールドAは赤でなければなりません。
- フィールドCは青でなければなりません。
- フィールドDは黄色でなければなりません。
- フィールドBは緑でなければなりません。
ベストアンサー1
まず、これUUOC
(猫の無駄な使用)。cat
ここで使用する理由はありません。sed
そうでない場合でも、ファイルからstdinをリダイレクトすることはパイピングと同じです。
esc=$(echo -e '\e')
sed "s,\(.*\) \(.*\) \(.*\) \(.*\),$esc[31m\1 $esc[34m\2 $esc[33m\3 $esc[32m\4$esc[m," file4
これは、もともと指定したフィールド間に2つのスペースがあると想定していますが、それに応じて編集が行われたようです。
なぜ元の方法(1行のすべてのテキストと一致し、2つのエスケープコード(黄色)の間にラップすると、複数の色が提供されると思うのかわかりません)。