정규식이 예상대로 작동하지 않는 sed

정규식이 예상대로 작동하지 않는 sed

SED를 사용해 본 것은 이번이 처음입니다.

간단한 문자열을 작업하려면 바꾸기 명령을 사용할 수 있습니다. 좋다:

sed -i 's/foo/bar/g' file.txt

그러나 정규식을 사용하려고 하면 작동이 중지됩니다. URL을 식별하는 데 사용하려는 정규식은 다음과 같습니다.

(https?:)?(\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)

텍스트 파일에서 모든 URL을 제거하려고 합니다. 이것은 내 완전한 명령입니다.

sed -i 's/(https?:)?(\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)//g' file.txt

누구든지 이 문제를 볼 수 있나요?

답변1

확장 정규식을 활성화하려면 명령 -r에 추가해야 할 수도 있습니다 .sed

-r즉 , ?, +, (), {}, 에는 문자 그대로의 의미 가 없으며 |"정규 표현식" 의미를 부여하려면 앞에 백슬래시를 붙여야 합니다.

바라보다GNU 웹사이트의 문서더 자세한 설명을 원하시면.

관련 정보