Linux에서 텍스트를 sed로 바꾸기

Linux에서 텍스트를 sed로 바꾸기

내 파일에 다음 텍스트가 있습니다

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

관련 정보