Ajuda!

1. Ajuda!

Alessandro Schneider dos Santos
Krusth

(usa Fedora)

Enviado em 15/09/2016 - 11:31h

Quero incluir uma linha em determinada posição do arquivo, por exemplo: incluir texto na linha tal, mas passando variáveis ao sed

Exemplo:

#!/bin/bash

Line=$(cat -n arquivo | grep $i | awk '{print $1}')
text=$(cat arquivo | grep -n ^ | grep ^$Line | cut -d: -f2)
sed -i "$Linei\$text\" arquivo2

# Sei que se eu usar
sed -i '4i\texto\' arquivo2

Funciona, incluindo "texto" na linha 4
Quero passar o número da linha e o texto por variáveis, tem como? Alguém pode dar um exemplo?


  


2. Re: Ajuda!

Perfil removido
removido

(usa Nenhuma)

Enviado em 15/09/2016 - 12:25h

Você tem que colocar a variável no comando do sed e usar aspas duplas "" ao invés de simples ''.

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



3. Re: Ajuda!

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 15/09/2016 - 13:10h

Krusth escreveu:

Quero incluir uma linha em determinada posição do arquivo, por exemplo: incluir texto na linha tal, mas passando variáveis ao sed
Exemplo:

#!/bin/bash
Line=$(cat -n arquivo | grep $i | awk '{print $1}')
text=$(cat arquivo | grep -n ^ | grep ^$Line | cut -d: -f2)
sed -i "$Linei\$text\" arquivo2

# Sei que se eu usar
sed -i '4i\texto\' arquivo2

Funciona, incluindo "texto" na linha 4
Quero passar o número da linha e o texto por variáveis, tem como? Alguém pode dar um exemplo?

------------------------------------------------------------------------
Boa tarde, Krusth.
O Erro, é neste comando, sed -i "$Linei\$text\" arquivo2
PROTEJA a VAR $Line
sed -i ""$Line"i $text" arquivo2 

Ou
sed -i "${Line}i $text" arquivo2 

Notei que o Nº da LINHA esta na VAR "$i", portanto, o comando:
Line=$(cat -n arquivo | grep $i | awk '{print $1}')
É desnecessário
OTIMIZANDO .....
text=$(awk 'NR=='$i' {print $0}' arquivo.txt)
sed -i ""$i"i $text" arquivo2 


att.:
Marcelo Oliver


4. Re: Ajuda!

Alessandro Schneider dos Santos
Krusth

(usa Fedora)

Enviado em 15/09/2016 - 17:14h

msoliver escreveu:

Krusth escreveu:

Quero incluir uma linha em determinada posição do arquivo, por exemplo: incluir texto na linha tal, mas passando variáveis ao sed
Exemplo:

#!/bin/bash
Line=$(cat -n arquivo | grep $i | awk '{print $1}')
text=$(cat arquivo | grep -n ^ | grep ^$Line | cut -d: -f2)
sed -i "$Linei\$text\" arquivo2

# Sei que se eu usar
sed -i '4i\texto\' arquivo2

Funciona, incluindo "texto" na linha 4
Quero passar o número da linha e o texto por variáveis, tem como? Alguém pode dar um exemplo?

------------------------------------------------------------------------
Boa tarde, Krusth.
O Erro, é neste comando, sed -i "$Linei\$text\" arquivo2
PROTEJA a VAR $Line
sed -i ""$Line"i $text\" arquivo2 

Ou
sed -i "${Line}i $text\" arquivo2 

Notei que o Nº da LINHA esta na VAR "$i", portanto, o comando:
Line=$(cat -n arquivo | grep $i | awk '{print $1}')
É desnecessário
OTIMIZANDO .....
text=$(awk 'NR=='$i' {print $0}' arquivo.txt)
sed -i ""$i"i $text\" arquivo2 


att.:
Marcelo Oliver


Olá Marcelo, valew pela dica.
Mas não funcionou nenhum dos modos
# sed -i ""$Line"i $text\' arquivo2
>

# sed -i "${Line}i $text\" arquivo2
>

Parece que esta faltando parametros...?


5. Re: Ajuda!

Alessandro Schneider dos Santos
Krusth

(usa Fedora)

Enviado em 15/09/2016 - 17:25h

o problema está nessa 1 variável, se coloco o numero da linha "4" a segunda variável imprime normalmente no arquivo.
Mas essa variável que determina a linha parece não estar sendo interpretada. :/


6. Re: Ajuda!

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 15/09/2016 - 20:49h

Krusth escreveu:

msoliver escreveu:

Krusth escreveu:

Quero incluir uma linha em determinada posição do arquivo, por exemplo: incluir texto na linha tal, mas passando variáveis ao sed
Exemplo:

#!/bin/bash
Line=$(cat -n arquivo | grep $i | awk '{print $1}')
text=$(cat arquivo | grep -n ^ | grep ^$Line | cut -d: -f2)
sed -i "$Linei\$text\" arquivo2

# Sei que se eu usar
sed -i '4i\texto\' arquivo2

Funciona, incluindo "texto" na linha 4
Quero passar o número da linha e o texto por variáveis, tem como? Alguém pode dar um exemplo?

------------------------------------------------------------------------
Boa tarde, Krusth.
O Erro, é neste comando, sed -i "$Linei\$text\" arquivo2
PROTEJA a VAR $Line
sed -i ""$Line"i $text\" arquivo2 

Ou
sed -i "${Line}i $text\" arquivo2 

Notei que o Nº da LINHA esta na VAR "$i", portanto, o comando:
Line=$(cat -n arquivo | grep $i | awk '{print $1}')
É desnecessário
OTIMIZANDO .....
text=$(awk 'NR=='$i' {print $0}' arquivo.txt)
sed -i ""$i"i $text\" arquivo2 


att.:
Marcelo Oliver


Olá Marcelo, valew pela dica.
Mas não funcionou nenhum dos modos
# sed -i ""$Line"i $text\' arquivo2
>

# sed -i "${Line}i $text\" arquivo2
>

Parece que esta faltando parametros...?


DESCULPE!!!!
Digitei ERRADO!!!
CORRIGIDO:
sed -i ""$Line"i $text" arquivo2 

Ou
sed -i "${Line}i $text" arquivo2 

OTIMIZADO:
text=$(awk 'NR=='$i' {print $0}' arquivo.txt) 

sed -i ""$i"i $text" arquivo2 


Marcelo Oliver



7. Re: Ajuda!

Alessandro Schneider dos Santos
Krusth

(usa Fedora)

Enviado em 16/09/2016 - 13:14h

msoliver escreveu:

Krusth escreveu:

msoliver escreveu:

Krusth escreveu:

Quero incluir uma linha em determinada posição do arquivo, por exemplo: incluir texto na linha tal, mas passando variáveis ao sed
Exemplo:

#!/bin/bash
Line=$(cat -n arquivo | grep $i | awk '{print $1}')
text=$(cat arquivo | grep -n ^ | grep ^$Line | cut -d: -f2)
sed -i "$Linei\$text\" arquivo2

# Sei que se eu usar
sed -i '4i\texto\' arquivo2

Funciona, incluindo "texto" na linha 4
Quero passar o número da linha e o texto por variáveis, tem como? Alguém pode dar um exemplo?

------------------------------------------------------------------------
Boa tarde, Krusth.
O Erro, é neste comando, sed -i "$Linei\$text\" arquivo2
PROTEJA a VAR $Line
sed -i ""$Line"i $text\" arquivo2 

Ou
sed -i "${Line}i $text\" arquivo2 

Notei que o Nº da LINHA esta na VAR "$i", portanto, o comando:
Line=$(cat -n arquivo | grep $i | awk '{print $1}')
É desnecessário
OTIMIZANDO .....
text=$(awk 'NR=='$i' {print $0}' arquivo.txt)
sed -i ""$i"i $text\" arquivo2 


att.:
Marcelo Oliver


Olá Marcelo, valew pela dica.
Mas não funcionou nenhum dos modos
# sed -i ""$Line"i $text\' arquivo2
>

# sed -i "${Line}i $text\" arquivo2
>

Parece que esta faltando parametros...?


DESCULPE!!!!
Digitei ERRADO!!!
CORRIGIDO:
sed -i ""$Line"i $text" arquivo2 

Ou
sed -i "${Line}i $text" arquivo2 

OTIMIZADO:
text=$(awk 'NR=='$i' {print $0}' arquivo.txt) 

sed -i ""$i"i $text" arquivo2 


Marcelo Oliver


Resolvido!
Show!!!
Muito obrigado por compartilhar teu conhecimento!

Abraço.



  



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts