2013-04-10 6 views
1

log.Please 카운트 및 패턴 값을 볼 수 있지만 macthed 값을 얻을 수 없습니다. 내 요구 사항 변수의 장치 목록을 얻는 것입니다하지만 그것은 카운트 및 패턴 값을 집어 것 같아요.awk 변수 사용

pattern=ABCD 
count=4 
x=3 
if [[ $count -gt $x ]] ; then 
echo "Count : $count" >> ${LOGFILE} 
echo "Pattern : $pattern" >> ${LOGFILE} 
list=cat /tmp/info.txt | awk 'a-->0;/"$pattern"/{a=$count}' 
echo "List : $list" >> ${LOGFILE}` 

나는 그것이 잘 작동하고 명령 줄에서 직접 실행하면 내가 방법을 아래에 시도했지만

cat /tmp/info.txt | awk 'a-->0;/"$pattern"/{a=$count}' >> ${LOGFILE} 

작동하지 않은 ...

cat /tmp/info.txt | awk 'a-->0;/ABCD/{a=4}' 

답변

3

"패턴은"쉘 변수입니다. awk는 쉘이 아니며 awk이기 때문에 C 프로그램 내에서 액세스하지 않을 것처럼 awk 스크립트 내의 쉘 변수에 액세스하지 않아야합니다. comp.unix.shell 자주 묻는 질문에

참조 질문 24 :

http://cfajohnson.com/shell/cus-faq-2.html#Q24

하고 "-v"옵션을 사용합니다.

그런 다음 셸 문제도 해결하고이 결과를 얻을 :

pattern=ABCD 
count=4 
x=3 
if [[ $count -gt $x ]] ; then 
echo "Count : $count" >> "$LOGFILE" 
echo "Pattern : $pattern" >> "$LOGFILE" 
list=$(awk -v pattern="$pattern" -v count="$count" 'a-->0; $0 ~ pattern{a=count}' /tmp/info.txt) 
echo "List : $list" >> "$LOGFILE" 

훨씬 이해가되지 않지만 적절한 장소에 fi를 추가 적어도 한 번 문법적으로 정확해야한다. 당신이하려는 것을 우리에게 말해 준다면, 우리는 당신이 그것을 할 합리적인 스크립트를 작성하도록 도울 수 있습니다.