Скрипт, удаляющий нежелательные символы из переменной

Скрипт, удаляющий нежелательные символы из переменной

У меня есть скрипт, который устанавливает переменную. Обычно это 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о${параметр/шаблон/строка}

Связанный контент