값이 0보다 크면 전체 줄을 빨간색으로 인쇄합니다.

값이 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기록된 값 02이나 0011실제로 발생하는 경우에도 작동해야 합니다. 이것은 또한 문자 값이 아닌 숫자 값( 000은 실제로 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

관련 정보