変数を設定するスクリプトがあります。通常、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
これを行う方法はいくつかあります。
あなたの状況に合った正しい16進コードを使用してください。
clean_url="$(echo ${dirty_url} | sed 's/[\x20-\x2D]/ /g')"
その後、これを実行して複数のスペースがあることを確認し、それを1つのスペースに減らします。
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~について${パラメータ/パターン/文字列}