Script que elimina caracteres no deseados de la variable.

Script que elimina caracteres no deseados de la variable.

Tengo un script que establece una variable. Suele ser una URL que se ha copiado de un archivo HTML y luego se utiliza esa variable.

Tomo el contenido copiado del texto/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 los reemplace todos con espacios.

Respuesta1

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

Podrías usarlo sedpara esto.

Si su $urlvariable se parece a esto:

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

Respuesta2

muchas maneras de hacer esto

Utilice los códigos hexadecimales correctos para su propio caso.

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

luego lo ejecutaría para verificar si tiene múltiples espacios y lo reduciría a un espacio con algo como

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

Respuesta3

Podrías usarexpansión de parámetros de bashdespués de habilitarglobo 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

Respuesta4

Expansión de parámetros de Bash simplificada:

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

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

VerManual de Bash, párrafo 3.5.3acerca de${parámetro/patrón/cadena}

información relacionada