Bash 변수의 경로를 sed 표현식으로 확장

Bash 변수의 경로를 sed 표현식으로 확장

이 줄에 문제가 있는지 묻고 싶습니다.

sed -i "/$PWD/a\ Hello World" historia.txt

내가 이것을 넣으면 물론 변수를 확장하지 않고 작동한다는 점만 ''제외하면 됩니다 .""

답변1

문제는 경로에 문자가 포함되어 있고 대체 매개변수 분리에도 /해당 문자를 사용하고 있다는 것입니다. 가장 간단한 해결 방법은 데이터에 표시되지 않는 다른 구분 기호(예: 다음 예에서와 같이 , 또는 쉼표)를 sed사용하는 것입니다 .sed|

sed -i "s,${PWD},a Hello World," historia.txt

편집: 위의 내용은 귀하가 겪고 있는 문제(슬래시 충돌)를 설명합니다. 하지만 나는 (이제) 당신이 바꾸는 것이 아니라 일치하는 줄 뒤에 줄을 추가하는 것을 봅니다. 이 경우 PWD경로에서 슬래시를 이스케이프 처리할 수 있습니다 sed. 예를 들면 다음과 같습니다.

sed -i "/${PWD//\//\\/}/a Hello World" historia.txt

관련 정보