[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Re: trabalhando com linhas de arquivo ( e o sed -i ?)
From: |
Flavio Junior |
Subject: |
Re: [shell-script] Re: trabalhando com linhas de arquivo ( e o sed -i ?) |
Date: |
Tue, 27 Nov 2007 16:15:39 -0200 |
Hm..
Se eu entendi o que tu tentou demonstrar ali é que, o sed -i na real
cria uma nova entrada de diretorio no sistema de arquivos né ?
O que gera um novo i-node.
O proprio "vim" usa a tecnica no sed.. o que se mostrou mais rapido (o
sed) nos meus testes mesmo. Mas o "ed" (oh, o ed...) pode fazer o que
voce quer:
[root@bugsbunny ~]# ls -i teste.txt; cat teste.txt
2097218 teste.txt
teste
[root@bugsbunny ~]# ed -s teste.txt <<< $'s/e/3/g\nw\nq'
[root@bugsbunny ~]# ls -i teste.txt; cat teste.txt
2097218 teste.txt
t3st3
[root@bugsbunny ~]# vim +':s/3/e/g' +':wq' teste.txt
[root@bugsbunny ~]# ls -i teste.txt; cat teste.txt
2097220 teste.txt
teste
[root@bugsbunny ~]#
--
Flávio do Carmo Júnior
On Nov 27, 2007 3:59 PM, mop <mop2bky4mz5tyjwa8ersp7hrg5u9qn@... wrote:
>
>
>
>
>
>
> Parece-me que o SED é bem tolerado como assunto na lista. :)
>
> Não lembro de uma forma de fazer uma substituição de string no local
> físico com as ferramentas comumente citadas aqui.
>
> Pelo que entedi o sed com a opção -i faria isso.
> "ls -i" mostra o inode do arquivo.
> Obs.: os resultados abaixo são em uma simples partição ext2, blocos de 4k.
> Qual a explicação????
>
> Do manual do sed:
> ------------
> -i[suffix], --in-place[=suffix]
>
> edit files in place (makes backup if extension supplied)
>
> VERSAO:
> -----------
> root@k7/tmp# sed --version|grep ver
> GNU sed version 4.1.5
> root@k7/tmp#
>
> O SED:
> -----------
> web@k7/tmp$ cat a;ls -i a;sed -i 's/r/R/' a;cat a;ls -i a
> pqrst
> 578005 a
> pqRst
> 577986 a
> web@k7/tmp$
> ######## passou o arquivo para outro local, testado várias vezes
>
> O SHELL
> ----------
> web@k7/tmp$ cat a;ls -i a;echo pqZst >a;cat a;ls -i a
> pqRst
> 577986 a
> pqZst
> 577986 a
> web@k7/tmp$
>
> O SHELL "appendando"
> ----------
> web@k7/tmp$ cat a;ls -i a;echo :pqZst >>a;cat a;ls -i a
> pqZst
> 577986 a
> pqZst
> :pqZst
> 577986 a
> web@k7/tmp$
>
> E viva o shell !!!
> Qual o programa indicado para fazer substituições no local físico?
>
> ------------------------------
> On 11/27/07, Flavio Junior
> > simples:
> >
> > [root@ideafix ~]# cat nada
> > teste1
> > teste2
> > teste3
> > teste4
> > teste5
> > teste6
> > teste7
> > teste8
> > [root@ideafix ~]# sed -i.bkp '/teste5/iNOOOOOOOOOOOOOOOOVA
> > LINHAAAAAAAAAAAAAAAAAAA' nada
> > [root@ideafix ~]# cat nada
> > teste1
> > teste2
> > teste3
> > teste4
> > NOOOOOOOOOOOOOOOOVA LINHAAAAAAAAAAAAAAAAAAA
> > teste5
> > teste6
> > teste7
> > teste8
> > [root@ideafix ~]# sed -i.bkp '/teste5/aNOOOOOOOOOOOOOOOOVA
> > LINHAAAAAAAAAAAAAAAAAAA' nada
> > [root@ideafix ~]# cat nada
> > teste1
> > teste2
> > teste3
> > teste4
> > NOOOOOOOOOOOOOOOOVA LINHAAAAAAAAAAAAAAAAAAA
> > teste5
> > NOOOOOOOOOOOOOOOOVA LINHAAAAAAAAAAAAAAAAAAA
> > teste6
> > teste7
> > teste8
> > [root@ideafix ~]#
>