sed를 사용하여 문자열을 디렉터리 이름(예: 슬래시 "/")이 포함된 문자열로 바꿉니다.

sed를 사용하여 문자열을 디렉터리 이름(예: 슬래시 "/")이 포함된 문자열로 바꿉니다.

이 질문이 이전에 요청된 적이 있다는 것을 알고 있지만 제가 찾은 답변을 이해할 수 없습니다. 기본적으로 사용하고 싶습니다

sed -i ///일부/디렉토리/g' 파일.txt

구문을 /some/directory깨지 않고 이 작업을 수행하는 방법에 대한 직접적인 답을 찾을 수 없습니다 .sed

답변1

sed여러 구문 구분 기호가 허용되지만 /가장 일반적으로 사용되는 구분 기호만 허용됩니다.

당신은 또한 말할 수 있습니다

sed -i 's,<string>,<some/directory>,g' file.txt

여기서는 ,일반적으로 에 의해 수행되는 기능이 있어 /후자를 특별한 의미에서 해방시킵니다.

그러나 (@Jeff Schaller가 지적했듯이) 이제 ,파일이나 디렉터리 이름에 표시되어서는 안 된다는 점에 유의하세요.파일 이름으로 유효한 문자입니다! 이 답변sed특수 문자가 포함된 문자열에 적용할 때 진행 방법에 대한 좋은 개요입니다 .

답변2

찾기/바꾸기 문자열에 나타나지 않는 구분자를 찾았을 때, 찾기/바꾸기 문자열에 나타나지 않는 것으로 알려진 구분자로 구분자를 바꾸는 것도 좋은 방법입니다. 나는 쉼표보다는 더하기 기호를 사용하는 경향이 있지만 이는 대부분 습관의 문제입니다.

그러나 문자열에 표시되지 않는 구분 기호가 없으면 항상 백슬래시 이스케이프가 사용됩니다.

sed -e 's/<string>/<some\/directory>/g' file.txt

\슬래시 앞의 기호 sed는 구분 기호가 아닌 슬래시임을 나타냅니다.

답변3

#@AdminBee 지금까지 구분 기호로만 사용되는 것을 보았습니다. 쉼표보다 패턴에서 덜 자주 나타나는 것으로 추측됩니다.

sed -i 's#<string>#<some/directory>#g' file.txt

관련 정보