awk 에서 쉘스크립트 변수적용시 변수값내의 특수문자 처리질문드립니다.
글쓴이: idrukawa / 작성시간: 목, 2015/07/09 - 11:02오전
a.txt 파일에 다음과 같은 문자열이 들어있고
11 12 13 14(11) 12 13 14(11) 14 21 22 23 24(11) 31 32 33 34(22) ...
이 파일에서
각 줄의 4번째 값이 찾고자 하는 값과 일치할 때
일치하는 줄의 1번째 값을 구해오려고 합니다.
이를 awk로 구현하면 다음과 같은데요.
]$ cat a.txt | awk '$4~/원하는값/{print $1}'
이를 쉘스크립트내에서 실행하면
변수내의 괄호가 특수문자로 인식이되어 처리되지 않습니다.
#!/bin/sh # 이 값은 다른 처리에 의해서 반환된 값으로 # 괄호가 포함될 경우도 있고, # 괄호가 없는 값을 반환할 때도 있습니다. # 본 테스트에서는 14(11)이 반환되었다고 가정합니다. # 정상 동작하는 것을 보기위해 14를 넣고 실행해보면 12가 출력됨 TMP="14(11)" cat a.txt | awk '$4~/'$TMP'/{print $1}' # 출력 기대값은 11 인데 아무것도 출력이 안됨...
grep 에서는 특수문자가 포함된 문자열을 작은따옴표나 큰따옴표로 묶어주면
괄호등이 포함된 문자열도 일반 문자열로 인식하는데
awk에서는 안되네요...
ex) grep "14(11)" a.txt 11 12 13 14(11) 12 13 14(11) 14
Forums:
괄호가 특문처리되어 문제라면 백슬래시를 사용해
괄호가 특문처리되어 문제라면 백슬래시를 사용해 보세요
댓글 달기