![Linux에서 텍스트를 sed로 바꾸기](https://linux55.com/image/114670/Linux%EC%97%90%EC%84%9C%20%ED%85%8D%EC%8A%A4%ED%8A%B8%EB%A5%BC%20sed%EB%A1%9C%20%EB%B0%94%EA%BE%B8%EA%B8%B0.png)
내 파일에 다음 텍스트가 있습니다
path_tryuio=$path_opt/GMT/$CARGMT_VERSION
위의 텍스트를 아래의 텍스트로 바꾸고 싶습니다.sed
$path_track/GMT/cayu/station/GMT/$CARGMT_VERSION
여기서 버전은 변수입니다.
우리는 무엇을 해야 합니까?
답변1
경로에 슬래시가 포함되어 있으므로 sed의 구분 기호로 일반 문자를 사용하고 싶지 않을 것입니다 /
. 여기서는 /
다음을 사용하지 않습니다 ^
.
$ echo $path_tryuio
/this/is/some_path
$ echo $path_tryuio | sed -e "s^/is^^"
/this/some_path
또한 작은 따옴표 대신 큰 따옴표를 사용한다는 점에 유의하십시오. 쉘은 작은 따옴표 안의 변수를 확장하지 않습니다.
답변2
다음을 수정하고 싶다고 가정해 보겠습니다.
path_tryuio=$path_opt/GMT/$CARGMT_VERSION
=
일반적으로 as의 오른쪽에 예상되는 것 대신 as 를 사용하여 sed
이를 달성할 수 있습니다.
sed -e 's|path_tryuio=$path_opt/\(GMT/$CARGMT_VERSION\)|$path_track/GMT/cayu/station/\1|'
위의 sed 명령에서는 작은따옴표를 사용하므로 $
변수가 보간되지 않고 리터럴 문자열로 사용됩니다.
in은 그 뒤에 텍스트가 있기 때문에 패턴 공간의 끝으로 간주 $
되지 않습니다 .$path_opt