shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Re: [shell-script] Re: Adicionar conteúdo abaixo de u


From: Julio C. Neves
Subject: Re: [shell-script] Re: [shell-script] Re: Adicionar conteúdo abaixo de uma linha de arquivo
Date: Thu, 20 Jun 2019 17:35:11 -0300

Fala Paulo,
A sintaxe dos UNIXes precisa de uma barra invertida e o GNU sed, teoricamente tb. Suponha que depois do número 4 eu queira inserir um <TAB>4,5. Então:

$ seq 5 | sed '4a \\t4,5'
1
2
3
4
       4,5
5
Blz! Este caso aparentemente bate com o que vc falou, mas se fizer:
$ seq 5 | sed '4a \t4,5'
1
2
3
4
t 4,5
5

Neste caso a contrabarra não serviu para nada pois não foi entendida como <TAB>, para manter a compatibilidade com o UNIX. Ne entanto se eu quiser botar um monte de brancos antes do 4,5, olha o que vou testar:

$ seq 5 | sed '4a       4,5' # Um monte de brancos antes do 4,5
1
2
3
4
4,5
5

Já se eu usar uma contrabarra, que não é para escapar nada, já que o cmd está entre apóstrofos:
 
$ seq 5 | sed '4a\       4,5' # Um monte de brancos antes do 4,5
1
2
3
4
       4,5
5

Aí sim, funciona mas o UNIX ainda não entende essa sintaxe. Fazendo o mesmo sem a contrabarra, até no GNU sed dá zebra, veja:

$ seq 5 | sed '4a
>             4,5'
sed: -e expressão #1, caractere 18: Falta especificar um comando ao endereço

Então, prefiro usar a sintaxe do UNIX, que acho mais elegante, de mais fácil visualização e que mantem a compatibilidade:

$ seq 5 | sed '4a\
            4,5'
1
2
3
4
            4,5
5

Abraços,
Julio

» Não tem tempo para fazer um curso presencial?
» Na sua cidade não tem nenhum bom curso de Linux?
» Conheça nosso portal educacional e estude conosco: 
Também damos treinamento em sua empresa
em qualquer cidadecom certificado e nota fiscal.




Em qui, 20 de jun de 2019 às 16:21, Paulo address@hidden [shell-script] <address@hidden> escreveu:
 

Depois de apanhar bastante na Vbox do FreeBSD parece que precisa de
duas barras invertidas e a opção -e também. A quebra de linha é literal.

sed -e '/end1/,/end2/{/end2/a\\
texto' -e '}' arq

Abraços Paulo

On 20/06/2019 10:04, address@hidden [shell-script] wrote:
> Opa, pessoal, obrigado pela ajuda.
>
>
> A solução do Fredi funcionou no meu linux mas infelizmente não rodou no meu servidor que é freebsd.
>
> Fredi, poderia me explicar o que você fez nesse sed.
>
>
> ----------------------------------------------------------
> Enviado por: address@hidden
> ----------------------------------------------------------


reply via email to

[Prev in Thread] Current Thread [Next in Thread]