다음과 같은 경우 awk에 더 많은 변수를 설정하세요.

다음과 같은 경우 awk에 더 많은 변수를 설정하세요.

다음과 같은 간단한 테스트에서 두 변수에 오류가 발생합니다.

$ echo test|awk '{$2 != ""? o="ABC" r="123" : o="123 r="ABC"}END{print "o:"o" r:"r}'
awk: cmd. line:1: {$2 != ""? o="ABC" r="123" : o="123 r="ABC"}END{print "o:"o" r:"r}
awk: cmd. line:1:                     ^ syntax error
awk: cmd. line:1: {$2 != ""? o="ABC" r="123" : o="123 r="ABC"}END{print "o:"o" r:"r}
awk: cmd. line:1:                                                         ^ syntax error
awk: cmd. line:1: {$2 != ""? o="ABC" r="123" : o="123 r="ABC"}END{print "o:"o" r:"r}
awk: cmd. line:1:                                                                ^ unterminated string
$

단일 변수의 경우 잘 작동합니다.

$ echo test|awk '{$1 != ""? o="ABC" : o="123"}END{print "o:"o}'
o:ABC
$ echo test|awk '{$2 != ""? o="ABC" : o="123"}END{print "o:"o}'
o:123

답변1

연산자를 사용하면 실제로 이 작업을 수행할 수 없습니다. ? :연산자는 단일 값만 처리할 수 있고 두 개의 할당으로 두 개의 값이 생성되기 때문입니다.

대신 실제 if진술을 사용하십시오.

$ echo test|awk '{ if ($2 != "") { o="ABC"; r="123" } else { o="123"; r="ABC" }} END{ print "o:"o" r:"r}'
o:123 r:ABC

관련 정보