sed를 사용하여 파일의 경로를 새 경로로 바꾸는 방법은 무엇입니까?

sed를 사용하여 파일의 경로를 새 경로로 바꾸는 방법은 무엇입니까?

sed를 사용하여 파일의 경로를 새 경로로 바꾸고 있습니다. 여기에 누락되거나 존재하지 않는 것은 무엇입니까?

# sed -i `s|/$SPLUNK_HOME/bin/splunk|/opt/splunk/bin/splunk|g' filename

나는 >동의했다.

답변1

`결코 종료되지 않는 하위 쉘 문을 열려면 백틱( )을 사용합니다 . 견적이 일치하는지 확인하세요.

프롬프트는 >에 정의된 보조 프롬프트를 표시하여 끝나지 않은 인용문에 대한 추가 입력을 찾고 있음을 알려주는 셸입니다 PS2.

스크립트에서 매개변수 확장을 사용하려고 하므로 약한 따옴표( ")를 사용하십시오.

예를 들어:

$ cat haystack
I found some straw in here!
$ needle=straw
$ sed "s/$needle/pins/" haystack
I found some pins in here!

"약한 따옴표( )와 강한 따옴표( )를 사용할 '때 어떤 일이 발생하는지 살펴보겠습니다 .

$ set -x
$ sed "s/$needle/pins/" haystack
+ sed s/straw/pins/ haystack
I found some pins in here!
$ sed 's/$needle/pins/' haystack
+ sed 's/$needle/pins/' haystack
I found some straw in here!

보시다시피 약한 따옴표를 사용하면 $needle셸에서 요구하는 대로 매개변수 확장이 수행 됩니다.앞으로 sed항상 볼 수 있습니다. 큰 따옴표를 사용하면 이런 일이 발생하지 않으므로 sed이제 정규 표현식이 검색됩니다 /$needle/. 즉, "입력 끝 뒤에 문자열이 옵니다. needle"는 어떤 것과도 일치하지 않으므로 교체가 수행되지 않습니다.

관련 정보