Script que remove caracteres indesejados da variável

Script que remove caracteres indesejados da variável

Eu tenho um script que define uma variável. Geralmente é um URL que foi copiado de um arquivo HTML e então essa variável é usada.

Eu pego o conteúdo do texto/área de transferência copiado xclip -oute defino isso como uma variável - digamos $CLIP. No entanto, o URL copiado às vezes pode conter caracteres indesejados, como ",',`etc. Quero que o script substitua todos eles por espaços.

Responder1

o URL copiado às vezes pode conter caracteres indesejados, como ",',` etc. Quero que o script substitua todos eles por espaços.

Você poderia usar sedpara isso.

Se sua $urlvariável for parecida com isto:

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

Isto sedsubstitui todos os caracteres "indesejados" por espaços:

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

Responder2

muitas maneiras de fazer isso

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

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

então eu examinaria para verificar se você tem vários espaços e reduziria isso para um espaço com algo como

clean_url=$(sed 's/  */ /g' <<< ${clean_url})

Responder3

Você poderia usarexpansão do parâmetro bashdepois de ativarglobulaçã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

Responder4

Expansão simplificada de parâmetros 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.

VerManual do Bash, parágrafo 3.5.3sobre${parâmetro/padrão/string}

informação relacionada