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: Paulo
Subject: Re: [shell-script] Re: [shell-script] Re: Adicionar conteúdo abaixo de uma linha de arquivo
Date: Fri, 21 Jun 2019 12:55:33 -0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.2

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>
--------------------------------------------------------------------------------------------------------------


reply via email to

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