
我有一個設定變數的腳本。它通常是從 HTML 檔案複製的 URL,然後使用該變數。
我使用複製的文字/剪貼簿內容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
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 段關於${參數/模式/字串}