変数から不要な文字を削除するスクリプト

変数から不要な文字を削除するスクリプト

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

関連情報