sed 오류 교체 문자열

sed 오류 교체 문자열

안녕하세요. 문자열을 바꿔야 하는데 "return false;"라는 문자열을 사용하면 오류가 발생합니다.

#!bin/bash
oldstring='{alert("bash")}'
newstring='{return false;}'
grep -rl $oldstring /home/commons.bundle.js | xargs sed -i s/$oldstring/$newstring/g

오류: sh deleteBoo.sh sed: espressione -e #1, carattere 25: comando `s' 비종료자

답변1

grep -rlZF -- "$oldstring" /home/commons.bundle.js |
xargs -r0 sed -i "s/$oldstring/$newstring/g" -- 

다음과 같은 작은 변경 사항을 적용하면 작동합니다.

  • -Fgrep이 전달된 문자열을 정규식으로 평가하지 않도록 grep을 사용해야 합니다 .
  • 사용할 또 다른 grep 옵션은 -Znull 구분 기호를 사용하여 파일 이름을 xargs에 전달하는 것입니다.
  • 수신 측에서는 -0이제 xargs를 사용하여 파일 이름을 안전하게 압축 해제할 수 있습니다. "법률"에 따라 파일 이름에 null 값이 포함될 수 없습니다.

관련 정보