値が0より大きい場合は、行全体を赤で印刷します。

値が0より大きい場合は、行全体を赤で印刷します。

私の結果は、これが暗い診断であることを示しています。

ここに画像の説明を入力してください。

ただし、ゼロ以上の結果のみを赤で印刷したい場合、残りはデフォルトの色でなければなりません。したがって、結果は「:」の後にのみ表示され、残りは薄暗い場所であるため、実際には重要ではありません。

これまで私はこれを試しました

awk -F ' *: *' '$2 ~ $1 > 0 {print "\033[31m" $0"\033[0m"; next} 1' test.txt

しかし理解する

ここに画像の説明を入力してください。

答え1

正規表現の一致が奇妙です。そこで何をしたいのか分かりません。

これは私の小さなテストファイルで動作します。

awk -F":" '$2 !~ /^0 /  {print "\033[31m" $0"\033[0m"; next} 1' test.txt

テスト.txt:

Hello:0 D1
Hello:1 D2
Hello:10 D12

答え2

この試み:

$ awk -F ' *: *|[[:blank:]]' '$2>0 {print "\033[31m" $0"\033[0m"; next} 1' test.txt

$2記録された値020011実際に発生した場合でも機能する必要があります。これは、文字値ではなく数値(000は実際には0、つまり21)で021テストするロジックにも適しています。つまり、$2 !~ /^0/(後にスペースがない0)または$2 !~ /^0 /(後にスペースがある)0他の答えと同じです。した。 2つの可能なフィールド区切り文字を指定し、通常のスペースと' *: *'タブ'[[:blank:]]'をオーバーライドしてこれを実行します。

$22番目のフィールド()がゼロでないか欠落している場合は、上記のレコードが赤で印刷されますのでご注意ください。

答え3

テストするサンプル入力/出力がないため、テストされていませんが、これが必要なものかもしれません。

awk -F ':' '($2+0) > 0 {$0 = "\033[31m" $0 "\033[0m"} 1' test.txt

関連情報