Chamar um elemento do array no sed [RESOLVIDO]

1. Chamar um elemento do array no sed [RESOLVIDO]

yuttttttt
yuttttttt

(usa Outra)

Enviado em 13/02/2017 - 20:33h

Como funciona a sintaxe do bash nesse caso:

sed '/${var[0]}/s/${var[1]}/${var[2]}/g' arquivo


  


2. MELHOR RESPOSTA

Paulo
paulo1205

(usa Ubuntu)

Enviado em 14/02/2017 - 14:25h

yuttttttt escreveu:

Não, tudo criado no linux. O problema eu achei aqui, mas ainda não consegui resolver, estou usando o curl para pegar o html, e jogando numa variavel, e depois fazendo isso, mas o problema está ao retirar as tags hmtl, algo está dando errado ai:

linha=$( sed -e 's/<[^>]*>//g' <<< $var_curl )

array=(${linha//:/ })


Troque a primeira linha acima pelo seguinte.

linha=$( sed -e 's/<[^>]*>//g' -e 's/\r//g' <<< $var_curl ) 


3. Re: Chamar um elemento do array no sed [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 13/02/2017 - 21:20h

"aspas duplas"
--
Linux Counter: #596371


4. Re: Chamar um elemento do array no sed

yuttttttt
yuttttttt

(usa Outra)

Enviado em 13/02/2017 - 23:40h

ru4n escreveu:

"aspas duplas"


Primeira coisa que tentei, mas recebo erro dizendo que há caracteres sobrando após o comando. E se tento escapar com \ recebo "substituição incorreta".


5. Re: Chamar um elemento do array no sed [RESOLVIDO]

Alan Victor
alanvictorjp

(usa Debian)

Enviado em 14/02/2017 - 02:24h


tua pergunta ta muito vaga, explica o que tu quer fazer exatamente com essa linha do sed ai....


6. Re: Chamar um elemento do array no sed [RESOLVIDO]

yuttttttt
yuttttttt

(usa Outra)

Enviado em 14/02/2017 - 02:45h

alanvictorjp escreveu:


tua pergunta ta muito vaga, explica o que tu quer fazer exatamente com essa linha do sed ai....


quero fazer que isso funcione, modificar uma linha de um arquivo utilizando os valores de um array.
sed -i "/${var[0]}/s/${var[1]}/${var[2]}/g" arquivo




7. Re: Chamar um elemento do array no sed

Paulo
paulo1205

(usa Ubuntu)

Enviado em 14/02/2017 - 02:59h

Algum dos var[n] contém o caráter “/”?

Se sim, você pode usar outro separador de argumentos no comando s do sed. Por exemplo:

a="/etc/passwd"
b="/backup/etc/passwd.orig"
sed "s,$a,$b/" /tmp/my_script.sh > /tmp/other_script.sh


Obviamente, se você escolher outro separador de argumentos, tal separador não vai poder aparecer nas strings a serem substituídas, a não ser que você escape os caracteres especiais para o sed.

a='\/bin\/sh'
b='\/var\/named\/chroot\/bin\/rksh'
sed -i "s/$a/$b/" $HOME/bin/some_script.sh



8. Re: Chamar um elemento do array no sed [RESOLVIDO]

yuttttttt
yuttttttt

(usa Outra)

Enviado em 14/02/2017 - 03:14h

paulo1205 escreveu:

Algum dos var[n] contém o caráter “/”?

Se sim, você pode usar outro separador de argumentos no comando s do sed. Por exemplo:

a="/etc/passwd"
b="/backup/etc/passwd.orig"
sed "s,$a,$b/" /tmp/my_script.sh > /tmp/other_script.sh


Obviamente, se você escolher outro separador de argumentos, tal separador não vai poder aparecer nas strings a serem substituídas, a não ser que você escape os caracteres especiais para o sed.

a='\/bin\/sh'
b='\/var\/named\/chroot\/bin\/rksh'
sed -i "s/$a/$b/" $HOME/bin/some_script.sh


não tem / não, o problema é outro, o sed não está reconhecendo o valor da variavel, talvez pode ser o $ da variavel.


9. Re: Chamar um elemento do array no sed [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 14/02/2017 - 07:24h

yuttttttt escreveu:

Como funciona a sintaxe do bash nesse caso:

sed '${var[0]}/s/${var[1]}/${var[2]}/g' arquivo


Esse ${var[0]} seria a linha do arquivo, correto? Se for o caso, essa barra antes do `s' não deve existir. A sintaxe correta seria:
sed "${var[0]}s/${var[1]}/${var[2]}/g" arquivo 


--
Linux Counter: #596371


10. Re: Chamar um elemento do array no sed [RESOLVIDO]

Paulo
paulo1205

(usa Ubuntu)

Enviado em 14/02/2017 - 09:12h

Na primeira postagem ele colocou uma barra só antes do s, que realmente poderia ser inválido, mas, na segunda, ele colocou duas barras (“[i]/${arg[0]}/”), o que não seria errado.


11. Re: Chamar um elemento do array no sed [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 14/02/2017 - 11:40h

sed "/$VAR0/s/$VAR1/$VAR2/g" arquivo 


Substitui VAR1 por VAR2 somente nas linhas que contém "VAR0"

se não funcionar é pq a composição das variáveis é q estão erradas !!!
_______________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"


12. Re: Chamar um elemento do array no sed [RESOLVIDO]

yuttttttt
yuttttttt

(usa Outra)

Enviado em 14/02/2017 - 12:43h

Mauriciodez escreveu:

sed "/$VAR0/s/$VAR1/$VAR2/g" arquivo 


Substitui VAR1 por VAR2 somente nas linhas que contém "VAR0"

se não funcionar é pq a composição das variáveis é q estão erradas !!!
_______________________________________________________________
" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"


Já tentei colocando o valor do item do array dentro de uma variavel, mas também não funciona, dei um echo e está certo.

sed "${var[0]}s/${var[1]}/${var[2]}/g" arquivo

não está reconhecendo as variáveis.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts