[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
- RES: [shell-script] Inserir string no inicio da linha,
Julio Cezar Neves - DISB.O <=