sed를 사용하여 문자열 중간에 추가 [duplicate]

sed를 사용하여 문자열 중간에 추가 [duplicate]

저는 sed 스크립팅을 처음 접했습니다. 사용자에게 파일에 삽입할 값을 요청하는 스크립트를 만들고 싶습니다. 올바른 코드를 찾을 수 없습니다

그래서 텍스트 파일의 내 줄은 다음과 같습니다

path =

사용자의 경로를 입력하고 싶으므로 행은 다음과 같습니다.

path = /dev

시행착오를 거쳐 얻은 것은 다음과 같습니다.

read -p "Enter path name: " PT
echo "$( sed -i '/path/ s/.*/& $PT/' textfile )"

이것은 만든다

path = $PT

올바른 코드를 알려주시겠어요?

답변1

작은따옴표 내에서는 변수 확장이 발생하지 않습니다. 대신 큰따옴표를 사용하세요.

/+ 변수가 경로의 일부로 포함되기 때문입니다 . GNU의 경우 sed다른 대체 구분 기호를 사용해야 합니다.

read -p "Enter path name: " PT
sed -i "\#path# s#.*#& $PT#" infile

답변2

read -p "Enter path name: " PT
sed -i "/path/ s#.*#& $PT#" textfile

작은따옴표가 아닌 큰따옴표를 사용해야 합니다. 작은따옴표는 셸에서 문자열을 보호하지만 이 경우 셸에서 값을 확장하도록 하려고 합니다 $PT.

반품,

echo "$( ... )"

...(의 내용)과 동일합니다 $( ... ).

관련 정보