Substiruindo linha com IF usando sed[RESOLVIDO]

1. Substiruindo linha com IF usando sed[RESOLVIDO]

Jean César
dark777

(usa Slackware)

Enviado em 08/08/2017 - 02:58h

wiki.anon

pessoal eu fiz adicionei no meu bashrc as seguintes linhas abaixo

if [ -x /etc/rc.d/rc.otimiza ]; then
. /etc/rc.d/rc.otimiza dir
fi

porem para que ele nao fique otimizando toda hora o dir eu iria colocar um comando em /etc/rc.d/rc.local
que subistituisse estas linhas em /root/.bashrc para:

#if [ -x /etc/rc.d/rc.orimiza ]; then
# . /etc/rc.d/rc.otimiza dir
#fi

tentei fazer algo como:

MODIFICA=$(sed -i 's/^if [ -x /etc/rc.d/rc.otimiza ]; then/#if [ -x /etc/rc.d/rc.otimiza ]; then/^ . /etc/rc.d/rc.otimiza dir/#/etc/rc.d/rc.otimiza dir/a fi/#fi' ~/.bashrc)

mas ele diz que falta delimitador nao entendi ele nao teria que substituir um por outro?


  


2. Re: Substiruindo linha com IF usando sed[RESOLVIDO]

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 08/08/2017 - 09:31h

dark777 escreveu:
#if [ -x /etc/rc.d/rc.orimiza ]; then
# . /etc/rc.d/rc.otimiza dir
#fi


O que você quer é comentar (#) este trecho do arquivo?
Tenta assim:
sed -i '2,4s/^/#/' arquivo 

Veja qual é a numeração das linhas no seu arquivo; no exemplo acima o sed vai comentar (#) da linha 2 a 4.


3. Re: Substiruindo linha com IF usando sed[RESOLVIDO]

Jean César
dark777

(usa Slackware)

Enviado em 08/08/2017 - 11:17h


wiki.anon

acontece que o programa que estou fazendo nem sempre o bashrc tera estas quantidades de linhas entao o comando teria que comentar as linhas especificas dentro do arquivo.... pois nao é um programa simples com quantidades de linhas fixas...


4. Re: Substiruindo linha com IF usando sed[AJUDA]

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 08/08/2017 - 12:50h

Veja se isso resolve:
sed '/otimiza/,+2 s/^/#/' arquivo 

ou
awk '/otimiza/ {f=2} f && f-- {$0="#"$0}1' arquivo 



5. Re: Substiruindo linha com IF usando sed[RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 08/08/2017 - 13:01h

dark777 escreveu:
if [ -x /etc/rc.d/rc.otimiza ]; then
. /etc/rc.d/rc.otimiza dir
fi


como gambiarra vc pode fazer assim ... escreve o 'FI' separado ';' e manda o sed comentar a linha com "otimiza"
arquivo
if [ -x /etc/rc.d/rc.otimiza  ]; then 
. /etc/rc.d/rc.otimiza dir ; fi

sed -i '/otimiza/ s/^/#/' arquivo 



------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



6. Re: Substiruindo linha com IF usando sed[RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 08/08/2017 - 13:15h

HCK escreveu:

Veja se isso resolve:
sed '/otimiza/,+2 s/^/#/' arquivo 



gostei do comando, mais me diz uma coisa ... ele tem 2 ocorrências de "otimiza", o comando vai agir só na 1ª ocorrencia ou em todas as ocorrencias de otimiza ?

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



7. Re: Substiruindo linha com IF usando sed[RESOLVIDO]

Jean César
dark777

(usa Slackware)

Enviado em 08/08/2017 - 13:42h

Mauriciodez escreveu:

HCK escreveu:

Veja se isso resolve:
sed '/otimiza/,+2 s/^/#/' arquivo 



gostei do comando, mais me diz uma coisa ... ele tem 2 ocorrências de "otimiza", o comando vai agir só na 1ª ocorrencia ou em todas as ocorrencias de otimiza ?

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


seu comando foi legal funcionou mas ficou o if para tras

wiki.anon


8. Re: Substiruindo linha com IF usando sed[RESOLVIDO]

Jean César
dark777

(usa Slackware)

Enviado em 08/08/2017 - 13:43h

HCK escreveu:

Veja se isso resolve:
sed '/otimiza/,+2 s/^/#/' arquivo 

ou
awk '/otimiza/ {f=2} f && f-- {$0="#"$0}1' arquivo 




wiki.anon

seu comando awk funcionou perfeitamente porem qual parametro que realmente altera o arquivo?


9. Re: Substiruindo linha com IF usando sed[RESOLVIDO]

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 08/08/2017 - 13:57h

dark777 escreveu:

seu comando foi legal funcionou mas ficou o if para tras

wiki.anon


Ajuste o comando para sua necessidade.
Mostre como ficou e o que não tá conseguindo fazer!



10. Re: Substiruindo linha com IF usando sed[RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 08/08/2017 - 13:57h

dark777 escreveu:
seu comando foi legal funcionou mas ficou o if para tras


aqui o comando dele funcionou de boa

mauricio@phantom ~ $ cat txt.txt
if [ -x /etc/rc.d/rc.otimiza ]; then
. /etc/rc.d/rc.otimiza dir
fi
mauricio@phantom ~ $ sed '/otimiza/,+2 s/^/#/' txt.txt
#if [ -x /etc/rc.d/rc.otimiza ]; then
#. /etc/rc.d/rc.otimiza dir
#fi
mauricio@phantom ~ $


------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



11. Re: Substiruindo linha com IF usando sed[AJUDA]

Ryuk Shinigami
Ryuk

(usa Nenhuma)

Enviado em 08/08/2017 - 14:04h

dark777 escreveu:
awk '/otimiza/ {f=2} f && f-- {$0="#"$0}1' arquivo 


seu comando awk funcionou perfeitamente porem qual parametro que realmente altera o arquivo?


Você quer dizer, como fazer a edição direta no arquivo? Adicione isso "-i inplace" ao comando.
awk -i inplace '/otimiza/ {f=2} f && f-- {$0="#"$0}1' arquivo 



12. Re: Substiruindo linha com IF usando sed[RESOLVIDO]

Jean César
dark777

(usa Slackware)

Enviado em 08/08/2017 - 14:14h

Mauriciodez escreveu:

dark777 escreveu:
seu comando foi legal funcionou mas ficou o if para tras


aqui o comando dele funcionou de boa

mauricio@phantom ~ $ cat txt.txt
if [ -x /etc/rc.d/rc.otimiza ]; then
. /etc/rc.d/rc.otimiza dir
fi
mauricio@phantom ~ $ sed '/otimiza/,+2 s/^/#/' txt.txt
#if [ -x /etc/rc.d/rc.otimiza ]; then
#. /etc/rc.d/rc.otimiza dir
#fi
mauricio@phantom ~ $


------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


a ta agora eu entendi ele nao tinha alterado o if por causa da linha de comentario que existe acima do comando entao coloquei +3 e comentou perfeitamente..

em breve quando o programa estiver pronto e bem testado vou postar aqui ele será especialemnte para usuarios slackware mas pode ser adaptavel ao SO que estiver utilizando pois no mais ele vai fazer configuraçoes simples ...
wiki.anon



01 02