
정규식과 함께 명령줄에서 egrep을 사용하면 작동하지 않으며 제목에 오류가 표시됩니다.
egrep -rnw /var/log/usres/([a-z]+).([a-z]+)\/([a-z]+).conf/user.settings -e "pattern"
나는 정규식을 다음에서 확인했습니다.https://regex101.com/r/pL5pW4/1shellcheck.net을 사용했는데 둘 다 문제가 없다고 말했습니다. 내가 하려는 것은 다음과 같이 특정 폴더를 일치시키는 것입니다.
egrep -rnw /var/log/users/sd.dfr/test.conf/user.settings, so the
이 예의 "sd.dfr"과 "test"는 정규식의 용도입니다. 해당 조합을 폴더 경로와 일치시킵니다. 인용, 이스케이프, 이중 인용을 시도했습니다. 왜 이것이 작동하지 않습니까?
답변1
grep
정규식 검색내용에파일의. 검색하지 않습니다.이름이 일치하는 파일정규식. ( find
이를 위해 사용하십시오.) 또한 grep이 보기 전에 사용자가 제공하는 파일/디렉토리 이름 목록이 쉘에 의해 해석됩니다. 쉘은 다음을 사용하여 파일을 일치시킵니다. 방울정규 표현식이 아닙니다.
쉘 글로브는 정규식만큼 정확하지는 않지만 다음은 충분히 작동할 수 있습니다.
egrep -rnw /var/log/users/*.*/*.conf/user.settings -e "pattern"
또는 더 이상 egrep
사용되지 않기 때문에 더 좋습니다.
grep -Ernw /var/log/users/*.*/*.conf/user.settings -e "pattern"