답변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
다른 답변과 같습니다. 했다. 두 가지 가능한 필드 구분 기호를 지정 ' *: *'
하고 '[[:blank:]]'
일반 공백과 탭을 재정의하여 이를 수행합니다 .
$2
두 번째 필드( )가 0이 아니거나 누락된 경우 위의 기록이 빨간색으로 인쇄되므로 주의하시기 바랍니다.
답변3
테스트할 샘플 입력/출력이 없으므로 테스트되지 않았지만 이것이 원하는 것일 수 있습니다.
awk -F ':' '($2+0) > 0 {$0 = "\033[31m" $0 "\033[0m"} 1' test.txt