
У меня есть скрипт, который устанавливает переменную. Обычно это URL, который копируется из HTML-файла, а затем эта переменная используется.
Я беру скопированный текст/содержимое буфера обмена с помощью xclip -out
и устанавливаю его как переменную, скажем $CLIP
, . Однако скопированный URL иногда может содержать нежелательные символы, такие как ",',`
и т. д. Я хочу, чтобы скрипт заменил все их пробелами.
решение1
Скопированный URL-адрес иногда может содержать нежелательные символы, такие как
",',`
и т. д. Я хочу, чтобы скрипт заменил все их пробелами.
Вы могли бы использовать sed
это.
Если ваша $url
переменная выглядит примерно так:
echo $url
http://1f,oo"2b`a'r.com
Это sed
заменит все «нежелательные» символы пробелами:
echo $url | sed 's/[^a-zA-Z0-9:/\.]/ /g'
http://1f oo 2b a r.com
решение2
много способов сделать это
используйте правильные шестнадцатеричные коды для вашего случая
clean_url="$(echo ${dirty_url} | sed 's/[\x20-\x2D]/ /g')"
Затем я бы проверил, есть ли у вас несколько пробелов, и сократил бы их до одного с помощью чего-то вроде
clean_url=$(sed 's/ */ /g' <<< ${clean_url})
решение3
Вы могли бы использоватьрасширение параметра bashпосле включениярасширенная подстановка
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
решение4
Упрощенное расширение параметров Bash:
root@debian:# CLIP=$'http://abc\".x\'y`.com';cleanclip=$(echo ${CLIP//[\'\`\"]});echo $cleanclip
#Output:
http://abc.xy.com
PS: Удаляемый шаблон находится внутри [], а символы экранированы.
ВидетьРуководство Bash, параграф 3.5.3о${параметр/шаблон/строка}