Como sed -i '' [echo $ var] 'i word' file?

1

Código:

pos=2;
printf "Masi \nwas \nhere" > /tmp/1
sed -i ''echo $pos'i huhu' /tmp/1

Resultado esperado:

Masi 
huhu 
was 
here

Saída atual:

sed: -e expression #1, char 1: unknown command: '''
    
por Léo Léopold Hertz 준영 19.06.2016 / 10:10

1 resposta

4

As expressões nos apóstrofos não são avaliadas (nem subshell nem variáveis). Você precisa usar aspas normais:

$ pos=2;
$ printf "Masi \nwas \nhere" > /tmp/1
$ sed -i "'echo $pos'i huhu" /tmp/1
$ cat /tmp/1
Masi 
huhu
was 
here

que é equivalente de

$ sed -i "${pos}i huhu" /tmp/1

(sem o subnível)

    
por 19.06.2016 / 10:13