===== Вставляем спецсимволы =====
Требуется заменить «hello» на «hello world»
Естественно, мы пытаемся составить стандартную конструкцию типа:
''sed -i ‘s/\”hello\”\,/”hello world”,/g’ test.php''
Однако, на выходе мы получим hello world. Проблема заключается в том, что текст который мы заменяем прекрасно экранируется, а вот который мы вставляем он идет чистым текстом, и все спецсимволы попросту удаляются. Для выхода из этого положения мы используем малоизвестную возможность sed, возможность работы в hex-16.
Таким образом мы убиваем сразу 2 зайцев, мы можем с легкостью конвертировать строку любой сложности в сед, не ожидая проблем с спецсимволами. А так же можем вставлять их в вывод, не опасаясь остановки самого скрипта.
Заменяем текст со спец символами
''sed -i ‘s/\x22hello\x22\,/x22hello world/x22,/g’ test.php''
**Символ в ASCII Соответствие в HEX-16**
**!** \x21 **»** \x22 **#** \x23 **$** \x24 **%** \x25 **&** \x26 **'** \x27 **(** \x28 **)** \x29 * \x2A **+** \x2B **0** \x2C **-** \x2D **.** \x2E **/** \x2F **0** \x30 **1** \x31 **2** \x32 **3** \x33 **4** \x34 **5** \x35 **6** \x36 **7** \x37 **8** \x38
'9 \x39 : \x3A ; \x3B < \x3C = \x3D > \x3E ? \x3F @ \x40 A \x41 B \x42 C \x43 D \x44 E \x45 F \x46 G \x47 H \x48 I \x49 J \x4A K \x4B L \x4C M \x4D N \x4E O \x4F P \x50 Q \x51 R \x52 S \x53 T \x54 U \x55 V \x56 W \x57 X \x58 Y \x59 Z \x5A [ \x5B \ \x5C ] \x5D ^ \x5E _ \x5F ` \x60 a \x61 b \x62 c \x63 d \x64 e \x65 f \x66 g \x67 h \x68 i \x69 j \x6A k \x6B l \x6C m \x6D n \x6E o \x6F p \x70 q \x71 r \x72 s \x73 t \x74 u \x75 v \x76 w \x77 x \x78 y \x79 z \x7A { \x7B | \x7C } \x7D ~ \x7E DEL \x7F''
[[https://klondike-studio.ru/blog/sed-spetssimvoly/|https://klondike-studio.ru/blog/sed-spetssimvoly/]]