escreve variável em linha específica com comando sed

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

Eu preciso escrever echo $text$station na 27ª linha do arquivo de texto. Eu usei o comando abaixo, mas não funcionou,

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

produz; A variável $textankr ista "text" não pode ser passada dentro da função sed.

    
por deepblue_86 13.12.2015 / 16:45

2 respostas

1

Isso porque seu shell está interpretando \$ para significar um sinal de dólar literal (com escape). Experimente

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

ou usando uma mistura de aspas simples e duplas

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

ou com uma nova linha literal

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

(o que é mais POSIXly correto, eu acho).

    
por 13.12.2015 / 17:00
0

Talvez o problema possa ser um arquivo de saída vazio. Exemplo:     #! / bin / bash

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

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

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

Este script não pode gravar em um arquivo vazio dropbox.log.

Escreva algum texto no arquivo e execute o script novamente.

    
por 14.01.2019 / 14:25

Tags