write variable into specific line with sed command

echo -n "##### STATIONS? #######"
read station
text="stab_site "

Мне нужно записать echo $text$station в 27-ю строку текстового файла. Я использовал следующую команду, но она не сработала,

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

она выдает; $textankr ista Переменная "text" не может быть передана в функции sed.

0
13.12.2015, 17:45
2 ответа

Это потому, что ваша оболочка интерпретирует \ $ как буквальный (экранированный) знак доллара. Попробуйте использовать

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

или сочетание одинарных и двойных кавычек

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

или буквального перевода строки

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

(что, на мой взгляд, более корректно с точки зрения POSIX).

1
28.01.2020, 02:49

Возможно, проблема заключается в пустом выходном файле. Пример :#!/бин/баш

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

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

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

Этот скрипт не может записать в пустой файл dropbox.log.

Запишите текст в файл и снова выполните скрипт.

0
28.01.2020, 02:49

Теги

Похожие вопросы