Команда для экранирования строки в bash

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

эхо "привет \ мир" | escape | someprog

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

72 голоса | спросил User1 18 Mayam10 2010, 08:58:00

3 ответа


0

В Bash:

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

например:

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

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

printf -v var "%q\n" "hello\world"
echo "$var"
hello\\world
ответил Dennis Williamson 18 Maypm10 2010, 13:35:45
0

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

string="Hello\ world"
echo ${string//\\/\\\\} | someprog
ответил Fritz G. Mehner 18 Mayam10 2010, 10:40:39
0

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

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

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

ответил Michael Aaron Safyan 18 Mayam10 2010, 09:04:17

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132