Sed: 특수 문자의 올바른 이스케이프

Sed: 특수 문자의 올바른 이스케이프

sed다음에 대한 명령을 만들려고 합니다. v=window.location.search.match파일을 검색 하여 다음으로 바꾸려고 합니다 .<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>

이것이 내가 지금까지 가지고 있는 것입니다:

sed -i.bak 's/v=window.location.search.match/\<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"\>\</script\>/d' myfile.txt

이 명령을 실행한 후 다음 오류가 발생합니다.

sed: -e expression #1, char 49: unknown option to `s'

모두를 탈출시키기 위해 어디에 두어야 할지 혼란스럽습니다 \.

답변1

@Babyy가 지적했듯이 표현식에 /문자가 포함되어 있으면 sed구분 기호를 입력 파일에서 찾을 수 없는 구분 기호로 변경할 위험이 있습니다 |._

sed -i.bak 's|v=window.location.search.match|<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>|' myfile.txt

이제 전체 줄을 바꾸려면 표현식의 첫 번째 부분이 줄의 시작부터 끝까지 모든 것과 일치해야 합니다.

sed -i.bak 's|^.*v=window.location.search.match.*$|<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>|' myfile.txt

관련 정보