Dúvida! Inserindo conteúdo em linha específica. [RESOLVIDO]

1. Dúvida! Inserindo conteúdo em linha específica. [RESOLVIDO]

Alex J
alexjunio93

(usa Debian)

Enviado em 28/04/2017 - 23:15h

Olá boa noite! Estou com uma dúvida e já pesquisei bastante porém nada resolveu até então.
Estou criando um script pra poder instalar alguns programas, e no processo quero utilizar o sed para poder inserir os repositorios dos programas no source.list , esse é o exemplo do que tenho tentado porém sem exito!

sed -i '15s/^/deb [arch=amd64,i386] http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main/' modelo.txt
sed -i '16s/^/deb-src http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main/' modelo.txt
sed -i '18s/^/# NGINX/' modelo.txt
sed -i '19s/^/deb http://nginx.org/packages/debian/ codename nginx/' modelo.txt
sed -i '20s/^/deb-src http://nginx.org/packages/debian/ codename nginx/' modelo.txt


No início das linhas 15,16,18,19,20 quero inserir os seguintes conteúdos do comando! Mas, quando rodo o script não funciona.
Poderiam me dar um help? Ficarei bastante grato.
Abraços.


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 29/04/2017 - 12:36h

alexjunio93 escreveu:

Olá boa noite! Estou com uma dúvida e já pesquisei bastante porém nada resolveu até então.
Estou criando um script pra poder instalar alguns programas, e no processo quero utilizar o sed para poder inserir os repositorios dos programas no source.list , esse é o exemplo do que tenho tentado porém sem exito!


sed -i '15s/^/deb [arch=amd64,i386] http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main/' modelo.txt
sed -i '16s/^/deb-src http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main/' modelo.txt
sed -i '18s/^/# NGINX/' modelo.txt
sed -i '19s/^/deb http://nginx.org/packages/debian/ codename nginx/' modelo.txt
sed -i '20s/^/deb-src http://nginx.org/packages/debian/ codename nginx/' modelo.txt


No início das linhas 15,16,18,19,20 quero inserir os seguintes conteúdos do comando!
Mas, quando rodo o script não funciona.
Poderiam me dar um help? Ficarei bastante grato.
Abraços.


Boa tarde Alex.
Antes de inserir ou alterar linhas, as mesmas devem ser criadas.
Rode o comando abaixo:
while (($(awk 'END{print NR}' arquivo) < 21));do echo "" >> arquivo; done 

Os comandos para inserir, são:

sed -i "15a\deb [arch=amd64,i386] http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main/" modelo.txt
sed -i "15i\deb [arch=amd64,i386] http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main/" modelo.txt

Onde:
"a" => Insere depois da linha especificada
"i" => Insere antes da linha especificada


Se a resposta foi util, marque a como a melhor . . . Ficarei muito grato.... :)

Att.:
Marcelo oliver







3. Re: Dúvida! Inserindo conteúdo em linha específica. [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 29/04/2017 - 00:06h

alexjunio93 escreveu:

Olá boa noite! Estou com uma dúvida e já pesquisei bastante porém nada resolveu até então.
Estou criando um script pra poder instalar alguns programas, e no processo quero utilizar o sed para poder inserir os repositorios dos programas no source.list , esse é o exemplo do que tenho tentado porém sem exito!

sed -i '15s/^/deb [arch=amd64,i386] http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main/' modelo.txt
sed -i '16s/^/deb-src http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main/' modelo.txt
sed -i '18s/^/# NGINX/' modelo.txt
sed -i '19s/^/deb http://nginx.org/packages/debian/ codename nginx/' modelo.txt
sed -i '20s/^/deb-src http://nginx.org/packages/debian/ codename nginx/' modelo.txt


No início das linhas 15,16,18,19,20 quero inserir os seguintes conteúdos do comando! Mas, quando rodo o script não funciona.
Poderiam me dar um help? Ficarei bastante grato.
Abraços.


ta meio confuso essa parada aí campeão .. a princípio vc tem q escapar todos os espaços e barras ... outra coisa .. vc tá querendo INSERIR ou está querendo editar ??? pq do jeito q vc colocou os comando vc está EDITANDO as linhas
_______________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"


4. Re: Dúvida! Inserindo conteúdo em linha específica. [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 29/04/2017 - 00:12h

sed -i '15s|.*|deb [arch=amd64,i386] http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main|' modelo.txt
sed -i '16s|.*|deb-src http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main|' modelo.txt
sed -i '18s|.*|# NGINX|' modelo.txt
sed -i '19s|.*|deb http://nginx.org/packages/debian/ codename nginx|' modelo.txt
sed -i '20s|.*|deb-src http://nginx.org/packages/debian/ codename nginx|' modelo.txt



5. Re: Dúvida! Inserindo conteúdo em linha específica. [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 29/04/2017 - 00:16h

PauloHAC escreveu:

sed -i '15s|.*|deb [arch=amd64,i386] http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main|' modelo.txt
sed -i '16s|.*|deb-src http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main|' modelo.txt
sed -i '18s|.*|# NGINX|' modelo.txt
sed -i '19s|.*|deb http://nginx.org/packages/debian/ codename nginx|' modelo.txt
sed -i '20s|.*|deb-src http://nginx.org/packages/debian/ codename nginx|' modelo.txt


hum ... gostei .. dessa eu não sabia ... anotado !!
_______________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"


6. Re: Dúvida! Inserindo conteúdo em linha específica. [RESOLVIDO]

Alex J
alexjunio93

(usa Debian)

Enviado em 29/04/2017 - 09:44h

Mauriciodez escreveu:

alexjunio93 escreveu:

Olá boa noite! Estou com uma dúvida e já pesquisei bastante porém nada resolveu até então.
Estou criando um script pra poder instalar alguns programas, e no processo quero utilizar o sed para poder inserir os repositorios dos programas no source.list , esse é o exemplo do que tenho tentado porém sem exito!

sed -i '15s/^/deb [arch=amd64,i386] http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main/' modelo.txt
sed -i '16s/^/deb-src http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main/' modelo.txt
sed -i '18s/^/# NGINX/' modelo.txt
sed -i '19s/^/deb http://nginx.org/packages/debian/ codename nginx/' modelo.txt
sed -i '20s/^/deb-src http://nginx.org/packages/debian/ codename nginx/' modelo.txt


No início das linhas 15,16,18,19,20 quero inserir os seguintes conteúdos do comando! Mas, quando rodo o script não funciona.
Poderiam me dar um help? Ficarei bastante grato.
Abraços.


ta meio confuso essa parada aí campeão .. a princípio vc tem q escapar todos os espaços e barras ... outra coisa .. vc tá querendo INSERIR ou está querendo editar ??? pq do jeito q vc colocou os comando vc está EDITANDO as linhas
_______________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"


Obrigado pela atenção amigo! Eu to querendo inserir mesmo! Meu problema está no fato de no arquivo que quero inserir ter 7 linhas, e como quero inserir diretamente numa linha 15,16,... o script n funciona.


7. Re: Dúvida! Inserindo conteúdo em linha específica. [RESOLVIDO]

Alex J
alexjunio93

(usa Debian)

Enviado em 29/04/2017 - 09:47h

PauloHAC escreveu:

sed -i '15s|.*|deb [arch=amd64,i386] http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main|' modelo.txt
sed -i '16s|.*|deb-src http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main|' modelo.txt
sed -i '18s|.*|# NGINX|' modelo.txt
sed -i '19s|.*|deb http://nginx.org/packages/debian/ codename nginx|' modelo.txt
sed -i '20s|.*|deb-src http://nginx.org/packages/debian/ codename nginx|' modelo.txt



Bacana! Funciona certinho, porém como o arquivo original te 7 linhas, preciso manualmente dar enter para que as linhas que desejo inserir o conteúdo seja 'criada'... Tem idéia de como posso fazer isso ?


8. Re: Dúvida! Inserindo conteúdo em linha específica. [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 29/04/2017 - 09:56h

sed -e '15s|.*|deb [arch=amd64,i386] http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main|' -e '16s|.*|deb-src http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main|' -e '18s|.*|# NGINX|' -e '19s|.*|deb http://nginx.org/packages/debian/ codename nginx|' -e '20s|.*|deb-src http://nginx.org/packages/debian/ codename nginx|' -i modelo.txt 


Talvez precise acertar os números das inserções.
Será que com o comando interno i seria melhor aproveitado?
Não sei se aguenta tantos caracteres na linha.
Pode ser de talvez colocar tudo dentro das mesmas 'aspas simples' e separar por ;

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden



9. Re: Dúvida! Inserindo conteúdo em linha específica. [RESOLVIDO]

Alex J
alexjunio93

(usa Debian)

Enviado em 29/04/2017 - 10:18h

listeiro_037 escreveu:

sed -e '15s|.*|deb [arch=amd64,i386] http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main|' -e '16s|.*|deb-src http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main|' -e '18s|.*|# NGINX|' -e '19s|.*|deb http://nginx.org/packages/debian/ codename nginx|' -e '20s|.*|deb-src http://nginx.org/packages/debian/ codename nginx|' -i modelo.txt 


Talvez precise acertar os números das inserções.
Será que com o comando interno i seria melhor aproveitado?
Não sei se aguenta tantos caracteres na linha.
Pode ser de talvez colocar tudo dentro das mesmas 'aspas simples' e separar por ;

----------------------------------------------------------------------------------------------------------------
Nem direita, nem esquerda. Quando se trata de corrupção o Brasil é ambidestro.
(anônimo)

Encryption works. Properly implemented strong crypto systems are one of the few things that you can rely on. Unfortunately, endpoint security is so terrifically weak that NSA can frequently find ways around it. — Edward Snowden


Tive uma idéia e funcionou! O arquivo tem 7 linhas mas eu queria que o sed fizesse tudo nas linhas especificadas, não conheco um comando do sed que faria isso.. Mas consegui fazer uma gambiarra com o "echo" kkkk.

echo " " >> arquivo.txt

nisso ele cria as linhas.. Porém se tornaria bastante trabalhoso quando for preciso fazer em grande escala.


10. Re: Dúvida! Inserindo conteúdo em linha específica. [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 29/04/2017 - 20:04h

msoliver escreveu:

Boa tarde Alex.
Antes de inserir ou alterar linhas, as mesmas devem ser criadas.
Rode o comando abaixo:
while (($(awk 'END{print NR}' arquivo) < 21));do echo "" >> arquivo; done 

Os comandos para inserir, são:

sed -i "15a\deb [arch=amd64,i386] http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main/" modelo.txt
sed -i "15i\deb [arch=amd64,i386] http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main/" modelo.txt

Onde:
"a" => Insere depois da linha especificada
"i" => Insere antes da linha especificada


Se a resposta foi util, marque a como a melhor . . . Ficarei muito grato.... :)

Att.:
Marcelo oliver



Esse é o cara mesmo!
Aí, esqueceu que tem o "c" também, que insere exatamente na linha especificada.
sed -i "15c\deb [arch=amd64,i386] http://mirror.ufscar.br/mariadb/repo/10.1/debian jessie main/" modelo.txt






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts