從變數中刪除不需要的字元的腳本

從變數中刪除不需要的字元的腳本

我有一個設定變數的腳本。它通常是從 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

你可以使用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 段關於${參數/模式/字串}

相關內容