답변:
sed -i 's|'$fileWithPath'|HAHA|g' file
작은 따옴표는 문자열 리터럴을 정의합니다. 변수를 리터럴 외부에두면 쉘이 해당 부분을 확장 할 수 있습니다.
또한 경로를 구문 분석하려면 sed 명령에서 디렉토리 구분 기호 "/"와 혼동하지 않는 구분 기호를 사용하십시오.
sed -i 's|auth-user-pass nordvpn.txt|auth-user-pass /etc/openvpn/nordvpn.txt|g' *.ovpn
것 같습니다.
슬래시가있는 리터럴 문자열에 대한 더 좋은 방법 :
sed -i "s|my/path|my/other/path|g" myFileOfPaths.txt
대체 문자열 또는 패턴 문자열에 슬래시가 포함 된 경우 GNU sed가 대체 명령에 대한 대체 분리 문자를 허용한다는 사실을 사용할 수 있습니다. 분리 문자에 대한 공통 선택은 파이프 문자 | 또는 해시 # -구분 문자의 최선의 선택은 종종 처리되는 파일 유형에 따라 다릅니다. 당신의 경우에 당신은 시도 할 수 있습니다
sed -i 's#'$fileWithPath'#HAHA#g' $file
첫 번째 항목 만 변경 한 다음 'g'를 제거해야하는 경우 마지막 # 뒤의 문자 'g' 는 파일의 모든 항목을 변경하는 데 사용됩니다.
$fileWithPath
공백 이 있으면 잘못된 패턴이 삽입됩니다.