sed 명령을 사용하여 특정 줄에 변수 쓰기

sed 명령을 사용하여 특정 줄에 변수 쓰기
echo -n "##### STATIONS? #######"
read station
text="stab_site "

$text$station텍스트 파일의 27번째 줄 에 echo를 써야 합니다 . 다음 명령을 사용했지만 작동하지 않습니다.

sed -i "27i\$text$station" text.data

결과적으로 $textankr ista"text" 변수는 sed 함수 내에 전달될 수 없습니다.

답변1

이는 쉘이 이를 \$문자 그대로(이스케이프된) 달러 기호로 해석하기 때문입니다. 노력하다

sed -i "27i\\$text$station" text.data

또는 작은따옴표와 큰따옴표를 혼합하세요.

sed -i '27i\'"$text$station" text.data

또는 리터럴 줄 바꿈을 사용하십시오.

sed -i "27i\
$text$station" text.data

(내 생각에는 이것이 POSIX가 더 정확하다고 생각합니다).

답변2

아마도 문제는 빈 출력 파일일 수 있습니다. 예: #!/bin/bash

CAMINHO='/etc/scripts/dropbox.log'

RESULTADO=`date +%d/%m/%Y | tr '\n' ' '; dropbox status;`

sed -i "1i\
$RESULTADO" /etc/scripts/dropbox.log

이 스크립트는 빈 파일 dropbox.log에 쓸 수 없습니다.

파일에 일부 텍스트를 쓰고 스크립트를 다시 실행하십시오.

관련 정보