答え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
記録された値02
や0011
実際に発生した場合でも機能する必要があります。これは、文字値ではなく数値(00
0は実際には0、つまり21)で021
テストするロジックにも適しています。つまり、$2 !~ /^0/
(後にスペースがない0
)または$2 !~ /^0 /
(後にスペースがある)0
他の答えと同じです。した。 2つの可能なフィールド区切り文字を指定し、通常のスペースと' *: *'
タブ'[[:blank:]]'
をオーバーライドしてこれを実行します。
$2
2番目のフィールド()がゼロでないか欠落している場合は、上記のレコードが赤で印刷されますのでご注意ください。
答え3
テストするサンプル入力/出力がないため、テストされていませんが、これが必要なものかもしれません。
awk -F ':' '($2+0) > 0 {$0 = "\033[31m" $0 "\033[0m"} 1' test.txt