Script que remove caracteres indesejados da variável

3

Eu tenho um script que define uma variável. Geralmente, é uma URL que foi copiada de um arquivo HTML e, em seguida, essa variável é usada.

Eu pego o conteúdo copiado do texto / área de transferência usando xclip -out e o configuro como uma variável - digamos, $CLIP . No entanto, o URL copiado pode, às vezes, ter caracteres indesejados, como ",',' etc. Eu quero que o script substitua todos aqueles com espaços.

    
por d0wnloader 17.12.2016 / 21:17

4 respostas

1

the copied URL can sometimes have unwanted characters, such as ",',' etc. I want the script to replace all of those with spaces.

Você pode usar sed para isso.

Se a sua variável $url for algo como isto:

echo $url 
http://1f,oo"2b'a'r.com

Este sed substitui todos os caracteres "indesejados" por espaços:

echo $url | sed 's/[^a-zA-Z0-9:/\.]/ /g'
http://1f oo 2b a r.com
    
por 17.12.2016 / 21:53
0

muitas maneiras de fazer isso

use os códigos hexadecimais corretos para seu próprio caso

clean_url="$(echo ${dirty_url} | sed 's/[\x20-\x2D]/ /g')"

então eu iria executá-lo para verificar se você tem vários espaços e reduzi-los a um espaço com algo como

clean_url=$(sed 's/  */ /g' <<< ${clean_url})
    
por 17.12.2016 / 22:03
0

Você pode usar expansão do parâmetro bash depois de ativar globalização estendida

CLIP=$'http://abc\".x\'y'.com'
printf '%s\n' "$CLIP"
http://abc".x'y'.com
chars_to_remove=("'" '"' ''') #set characters to remove into an array
chars_to_remove=$(IFS='|'; printf '+(%s)' "${chars_to_remove[*]}") #assemble in extglob format
printf '%s\n' $chars_to_remove
+('|"|')
printf '%s\n' "${CLIP//${chars_to_remove}/ }"
http://abc .x y .com
    
por 17.12.2016 / 22:08
0

Expansão Simplificada do Parâmetro Bash:

root@debian:# CLIP=$'http://abc\".x\'y'.com';cleanclip=$(echo ${CLIP//[\'\'\"]});echo $cleanclip
#Output:
http://abc.xy.com

PS: O padrão a ser removido está dentro de [] e os caracteres são escapados.

Veja o manual de bash, parágrafo 3.5.3 sobre o parâmetro $ { / pattern / string}

    
por 17.12.2016 / 23:25