
変数を設定するスクリプトがあります。通常は 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について${パラメータ/パターン/文字列}