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

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

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

関連情報