Script que elimina caracteres no deseados de la variable

2

Tengo un script que establece una variable. Generalmente es una URL que se ha copiado de un archivo HTML y luego se usa esa variable.

Tomo el texto copiado / contenido del portapapeles xclip -outy lo configuro como una variable, digamos $CLIP. Sin embargo, la URL copiada a veces puede tener caracteres no deseados, como ",',`etc. Quiero que el script reemplace todos los espacios.

d0wnloader
fuente
Verifique mis ediciones y asegúrese de que no hayan cambiado la intención de su pregunta
Iruvar

Respuestas:

1

la URL copiada a veces puede tener caracteres no deseados, como ",',` etc. Quiero que el script reemplace todos los espacios.

Podrías usar sedpara esto.

Si su $urlvariable se ve así:

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

Esto sedreemplaza todos los caracteres "no deseados" con espacios:

echo $url | sed 's/[^a-zA-Z0-9:/\.]/ /g'
http://1f oo 2b a r.com
maulinglawns
fuente
1
esto se romperá si la URL final analizada necesita símbolos como &; %
μολὼν.λαβέ
Luego, simplemente agréguelos a los caracteres válidos en la expresión regular.
Maulinglawns
0

muchas formas de hacer esto

use los códigos hexadecimales correctos para su propio caso

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

luego lo revisaría para ver si tiene múltiples espacios y reducirlo a un espacio con algo como

clean_url=$(sed 's/  */ /g' <<< ${clean_url})
μολὼν.λαβέ
fuente
0

Puede usar la expansión de parámetros bash después de habilitar globbing extendido

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
iruvar
fuente
0

Expansión simplificada del parámetro Bash:

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

PD: El patrón que se eliminará está dentro de [] y se escapan los caracteres.

Consulte el manual de Bash, párrafo 3.5.3 sobre $ {parámetro / patrón / cadena}

George Vasiliou
fuente