|
From: | Julio C. Neves |
Subject: | Re: [shell-script] Re: [shell-script] Re: [shell-script] Re: Adicionar conteúdo abaixo de uma linha de arquivo |
Date: | Fri, 21 Jun 2019 14:26:06 -0300 |
Mestre Julio valeu a explicação, esses detalhes a gente só aprende no uso diário.
Eu tinha uma instalação do FreeBSD mas quebrei a ponto de ficar inutilizável.
Abraços Paulo
On 20/06/2019 17:35, 'Julio C. Neves' address@hidden [shell-script] wrote:
> 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: *
> * http://www.dicas-l.com.br/educacao <http://www..dicas-l.com.br/educacao/>*
> *Também damos treinamento em sua empresa*
> *em qualquer cidade**, **com certificado **e nota fiscal.*
> *
> *
>
>
>
> Em qui, 20 de jun de 2019 às 16:21, Paulo address@hidden <mailto:address@hidden> [shell-script]
> <address@hidden <mailto: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 <mailto: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 <mailto:address@hidden>
> > ----------------------------------------------------------
>
>
> ----------------------------------------------------------
> Enviado por: "Julio C. Neves" <address@hidden>
> ----------------------------------------------------------
[Prev in Thread] | Current Thread | [Next in Thread] |