[awk] awk에서 문자열 비교
awk에서 000000e2와000000e5를 비교하면, 두 개가 같은 것으로 나온다.
* 테스트 방법
- test.txt 파일의 한 줄에 000000e2와 000000e5를 넣어 둔다.
- test.txt에 다음을 넣어도 동일한 것으로 간주한다. 둘다 숫자 1로 간주하기 때문이다.
- 문자열로 간주하여 다른 값으로 취급하기 위해서는, 다음과 같이 숫자가 아닌 "문자열" 형태로 비교하면 된다. 문자열이 되기 위해서는 ""를 사용한다.
* 테스트 방법
- test.txt 파일의 한 줄에 000000e2와 000000e5를 넣어 둔다.
| 000000e2 000000e5 |
- 다음 명령을 실행한다.
| gawk ‘{ if($1 == $2) printf(“%s is equal to %s\n”, $1, $2); else printf(“%s is not equal to %s \n”, $1, $2); }’ test.txt |
- 명령을 실행하면 다음 결과가 출력된다.
| 000000e2 is equal to 000000e5 |
- 이유는 000000e2와 000000e5를 숫자로 간주하기 때문이다. 즉, e를 10의 n승을 곱하는 것으로 간주하여, 000000e2는 0 * 100 = 0 , 000000e5는 0 * 100000 = 0이 된다.
- test.txt에 다음을 넣어도 동일한 것으로 간주한다. 둘다 숫자 1로 간주하기 때문이다.
| 0001 1 |
- 문자열로 간주하여 다른 값으로 취급하기 위해서는, 다음과 같이 숫자가 아닌 "문자열" 형태로 비교하면 된다. 문자열이 되기 위해서는 ""를 사용한다.
| gawk ‘{ if($1 == “”$2) printf(“%s is equal to %s\n”, $1, $2); else printf(“%s is not equal to %s \n”, $1, $2); }’ test.txt |
* 참고 자료
http://osdir.com/ml/gnu.utils.bugs/2003-01/msg00088.html
댓글