Por que você não pode ter o arquivo Tab in sed -i “1i \ t 'word'”?

0

Pseudocódigo

printf "Masi \nwas \nhere" > /tmp/2
sed -i "1i \tword \t 'include word'" /tmp/2

Saída esperada: guia antes do primeiro word . Saída: tword 'include word' . Tentando usar variável para resolver o problema de muito poucos ticks

printf "masi \nwas \nhere" > /tmp/2
sentence="\tword \t 'include word'"
sed -i "1i $sentence" /tmp/2

Saída: mesmo problema tword 'include word' .

    
por Léo Léopold Hertz 준영 19.06.2016 / 10:36

2 respostas

1

Com o GNU sed :

sed -i '1i\t'$sentence /tmp/2

ou

sed -i "1i\\t$sentence" /tmp/2

O texto a ser inserido começa após o primeiro \ . Cite o script sed para impedir que seu shell faça algo com \t (ou insira ainda outro \ como no segundo exemplo acima). Com aspas simples, concatene $sentence com o script sed para que ele seja expandido pelo shell.

    
por 19.06.2016 / 11:26
2

Embora sed consiga interpretar \t em uma expressão regular, nenhum de seu script usa dessa maneira. Em vez disso, ele está usando \t como uma string literal.

Você pode fazer o que quiser da seguinte maneira:

printf "Masi \nwas \nhere" > /tmp/2
sed -i "1i XwordXinclude word'" /tmp/2
sed -i '1,1s/X/\t/g' /tmp/2
    
por 19.06.2016 / 10:49

Tags