
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 -out
y 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 sed
para esto.
Si su $url
variable se parece a esto:
echo $url
http://1f,oo"2b`a'r.com
Esto sed
reemplaza 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}