2016-08-18 2 views
2

파일의 특정 열을 바꿀 때 test.txt의 세 번째 열을 예로 들어 보겠습니다."if"문에서 Awk가 작동하지 않음

test.txt 만들기 :

echo "1 2 -1" > test.txt 
echo "3 4 +1" >> test.txt 

나는 간단한 교체 않으면 작동 :

awk '$3="cows"' test.txt 

1 2 cows 
3 4 cows 

을하지만, 내가 출력을 다양하게 조건을 사용하는 경우, 나는 아무것도 얻을 :

awk '{ 
if ($3 == "+1") 
    $3="cows"; 
else if ($3 == "-1") 
    $3="sheep"; 
}' test.txt 

무엇이 여기에 있습니까? 감사!

+2

'print' 문. –

+0

당신의 입력은'+ 1'을 사용합니다. awk은'1'을 사용합니다. 그게 뭐라 설명하니? – John3136

+0

John3136을 지적 해 주셔서 감사합니다. – chimeric

답변

2

awk 프로그램은 조건과 동작으로 구성되며 condition { action } 형식입니다.

Awk에는 현재 작업을 인쇄하는 기본 작업이 있습니다. 더 중괄호가 없기 때문에 첫 번째 프로그램에서

는 할당은 조건 아닌 행동입니다. 따라서 기본 조치가 실행됩니다.

두 번째 프로그램에서는 기본 작업을 대체하는 작업을 정의했습니다. 따라서 print은 더 이상 실행되지 않으므로 직접 수행해야합니다.

+0

감사! 그것은 나를 미치게했다. – chimeric

0

여러분, 맞습니다. 올바른 형식입니다.

awk '{ 
    if ($3 == "+1") 
     $3="cows"; 
    else if ($3 == "-1") 
     $3="sheep"; 
    print 
    }' test.txt 
관련 문제