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

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

Re: RES: [shell-script] Inserir string no inicio da linha


From: Jose NIEVIADONSKI
Subject: Re: RES: [shell-script] Inserir string no inicio da linha
Date: Tue, 10 Sep 2002 17:41:13 -0300

Alo julio e companheiros da lista.

  Excelente sua solução, mas vou dar mais um pitaco, que me parece mais
simples. Não precisa "guardar" a linha toda para depois recuperar com "\1",
basta usar o caractere ancora "^" que representa o inicio da linha.

Então o comando ficaria assim

Prompt> sed '3s/^/"inclui no inicio"/' testeq

Abraços a todos da lista.

José Augusto Martins Nieviadonski
Analista de Suporte Consultor
HSBC Bank Brasil S.A. - Banco Múltiplo
Treinamento de Informática


     Para:     address@hidden
     cc:
     cco: Jose NIEVIADONSKI/HBBR/HSBC
     Assunto:  RES: [shell-script] Inserir string no inicio da linha
"Julio Cezar Neves - DISB.O" <address@hidden>

10/09/2002 04:32 PM
Favor responder a shell-script           <font size=-1></font>

> -----Mensagem original-----
> De: Wagner Melcíades [mailto:address@hidden]
> Enviada em: segunda-feira, 9 de setembro de 2002 17:34
> Para: address@hidden
> Assunto: [shell-script] Inserir string no inicio da linha
>
> Tenho um script que precisa inserir o valor de uma variavel
> (que pode ser
> uma string) no inicio de uma linha especifica de um arquivo
> texto, claro sem
> alterar o restante do conteudo da linha. Alguem pode me dar a
> dica usando o
> sed? Inserir no inicio de todas as linhas é facil mas numa
> linha especifica
> eu nao consegui.

===========================================================


Olha ai Wagner,
tai o que vc queria:
Prompt> cat testeq
11111111111111111111111111
22222222222222222222222
333333333333333333333333
44444444444444444444
9999999999999999
000000000000000000000
Prompt> sed '3s/\(.*\)/"inclui no inicio"\1/' testeq
11111111111111111111111111
22222222222222222222222
"inclui no inicio"333333333333333333333333
44444444444444444444
9999999999999999
000000000000000000000

Pra entender (ou não :)

3s substitui (s) na 3ª linha (3)
(.*) Os parenteses servem para formar um grupo.
 No caso, (.*) do registro inteiro.
 As contrabarras servem para "escapar" os parenteses.
\1 Serve para devolver o grupo gerado pelos parênteses.

Desta maneira eu falei para, na 3ª linha, copiar todo o seu conteúdo,
escrever "inclui no inicio" e restaurar o que foi copiado.


======================================================
>
> Outra dúvida: neste mesmo script tentei usar o sed para
> substituir virgula
> por ponto em uma tabela em forma de arquivo texto de 34000
> linhas, só que o
> sed só fez o serviço em apenas uma coluna e finalizou sem
> erro, alguem sabe
> por que?
> O arquivo é muito grande? Alguma limitação?
>
> A sintaxe é trivial:
>
> sed 's/,/./' arquivo_ori.txt > arquivo_novo.txt
>
=======================================================


Sua segunda dúvida é muito simples. Qdo vc faz:

sed 's/,/./' arquivo_ori.txt > arquivo_novo.txt

vc está mandando substituir a 1ª vírgula por ponto. Para substituir todas,
vc deveria tornar a substituição "global", e isso vc consegue da seguinte
maneira:

sed 's/,/./g' arquivo_ori.txt > arquivo_novo.txt



==========================================================



> Desde já agradeço qualquer ajuda.
>
> Wagner
>


[ ]s,
Julio Cezar Neves
-Eu Apoio o Software Livre-
-I Support Free Software-
* +55 21 2528-7070  /  9853-4044
*address@hidden




The information contained in this e-mail is confidential. It may also be legally
privileged. If you are not the addressee you may not copy, forward, disclose
or use any part of it. If you have received this message in error, please 
delete it
and all copies from your system and notify the sender immediately by return 
e-mail.

E-mail communications cannot be guaranteed to be timely secure, error or 
virus-free.
The sender does not accept liability for any errors or omissions which arise as 
a result.



reply via email to

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