grep 패턴 일치

grep 패턴 일치

다음 명령문이 0을 반환할 것으로 예상하면 항상 1을 반환합니다.

 echo "ACI123456777-001-20170701.pdf" | grep -e "^ACI([0-9]{9})-([0-9]{3})-([0-9]{8}).pdf$"

답변1

다음과 같이 코드 1의 종료를 관찰합니다.

$ echo "ACI123456777-001-20170701.pdf" | grep -e "^ACI([0-9]{9})-([0-9]{3})-([0-9]{8}).pdf$"; echo code=$?
code=1

예상대로 작동하려면 -E` 옵션이 필요합니다.

$ echo "ACI123456777-001-20170701.pdf" | grep -Ee "^ACI([0-9]{9})-([0-9]{3})-([0-9]{8}).pdf$"; echo code=$?
ACI123456777-001-20170701.pdf
code=0

-E확장된 정규식 기능을 활성화합니다.

기본 정규식(기본값)을 실제로 사용하려면 몇 가지 이스케이프를 추가해야 합니다.

$ echo "ACI123456777-001-20170701.pdf" | grep -e "^ACI\([0-9]\{9\}\)-\([0-9]\{3\}\)-\([0-9]\{8\}\).pdf$"; echo code=$?
ACI123456777-001-20170701.pdf
code=0

의미-e

grep 옵션은 -e정규식 패턴 앞에 옵니다.

$ echo "ACI123456777-001-20170701.pdf" | grep -e '^ACI'
ACI123456777-001-20170701.pdf

패턴이 하나만 있는 경우 grep은 필요하지 않으며 -e생략할 수 있습니다.

$ echo "ACI123456777-001-20170701.pdf" | grep '^ACI'
ACI123456777-001-20170701.pdf

그러나 -e두 개 이상의 스키마가 필요한 경우:

$ echo "ACI123456777-001-20170701.pdf" | grep -e '^ACI' -e 'pdf'
ACI123456777-001-20170701.pdf

답변2

echo "ACI123456777-001-20170701.pdf"  | grep -q "ACI[0-9]\{9\}-[0-9]\{3\}-[0-9]\{8\}.pdf"
echo $?

관련 정보