2013-07-02 2 views
0

어떻게 작동합니까?Grep 변수 패턴 일치

#!/bin/bash 
SOMETHING=$(egrep '^ something' /some/dir/file.conf | awk -F '.' '{print $1}' | awk '{print $2}') 

if [ $SOMETHING = 123 ]; then 
    echo "Found 123" 
    else 
    echo "Cannot find 123" && exit 1 
fi 

결과적으로 grep이 구문 오류에 대해 불평합니다. '^ 무언가'가 마음에 들지 않습니다.

+1

정확하게 일치 시키려면 무엇을 원하십니까? – Yossarian

+1

예와 함께 질문을 편집하십시오. 'grep | awk | cut'은 최선의 방법이 아닙니다. – Kent

+0

mv'SOME = $ (egrep '^ something'somefile.conf | awk '(print $ 4)'| cut -c1-3)'테스트를 끝낸 다음'$ SOMETHING'을 테스트에 넣으십시오. – demure

답변

2

파이프가있는 여러 명령을 awk 자체로 간단하게 대체 할 수 있습니다. 스크립트를 다음 사용

SOMETHING=$(awk '/^ something/{print substr($4, 1, 3);}' somefile.conf) 
if [ "$SOMETHING" = "123" ]; then 
    echo "Found 123" 
else 
    echo "Cannot find 123" && exit 1 
fi 

편집 : 나는 내 답변을 게시 후 질문과 스크립트를 편집 한 것 같은 보인다. 다음은 awk 명령을 수정 한 awk 명령입니다 (pls 명령은 다시 실행하지 마십시오).

SOMETHING=$(awk -F "." '/^ something/{split($1, a, " "); print a[2]}' somefile.conf)