Команда для выхода из строки в ударе

Мне нужна команда удара, которая преобразует строку во что-то, чего оставляют. Вот пример:

echo "hello\world" | escape | someprog

Где команда Escape делает "hello\world" в "hello\\\world". Затем someprog может использовать "hello\\world" как это ожидает. Конечно, это - упрощенный пример того, что я буду действительно делать.

86
задан Mateen Ulhaq 16 May 2019 в 23:44
поделиться

3 ответа

В Bash:

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

например:

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

Это также можно использовать через переменные:

printf -v var "%q\n" "hello\world"
echo "$var"
hello\\world
142
ответ дан 24 November 2019 в 08:03
поделиться

Чистый Bash, используйте подстановку параметров:

string="Hello\ world"
echo ${string//\\/\\\\} | someprog
8
ответ дан 24 November 2019 в 08:03
поделиться

Вы можете использовать perl для замены различных символов, например:

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

В зависимости от характера вашего экранирования вы можете объединить несколько вызовов, чтобы экранировать правильные символы.

0
ответ дан 24 November 2019 в 08:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: