web-dev-qa-db-ja.com

bashの文字列をエスケープするコマンド

文字列をエスケープされたものに変換するbashコマンドが必要です。以下に例を示します。

echo "hello\world" | escape | someprog

エスケープコマンドが"hello\world""hello\\\world"にする場所。その後、someprogは"hello\\world"を期待どおりに使用できます。もちろん、これは私が本当にやろうとしていることの簡単な例です。

83
User1

Bashの場合:

printf "%q" "hello\world" | someprog

例えば:

printf "%q" "hello\world"
hello\\world

これは変数でも使用できます。

printf -v var "%q\n" "hello\world"
echo "$var"
hello\\world
139

Pure Bash、パラメーター置換を使用:

string="Hello\ world"
echo ${string//\\/\\\\} | someprog
7
Fritz G. Mehner

Perlを使用して、次のようなさまざまな文字を置き換えることができます。

$ echo "Hello\ world" | Perl -pe 's/\\/\\\\/g'
Hello\\ world

エスケープの性質に応じて、適切な文字をエスケープするために複数の呼び出しを連鎖できます。