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

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

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


From: Julio Cezar Neves - DISB.O
Subject: RES: [shell-script] Inserir string no inicio da linha
Date: Tue, 10 Sep 2002 12:26:36 -0300

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


reply via email to

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