
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 -out
e 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 sed
para isso.
Se sua $url
variável for parecida com isto:
echo $url
http://1f,oo"2b`a'r.com
Isto 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
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}