sed вставляем спецсимволы

Требуется заменить <hello world > на hello world

Естественно, мы пытаемся составить стандартную конструкцию типа:

sed -i ‘s/<hello world>/hello world/g’ test.php

Однако, на выходе мы не получим hello world. Проблема заключается в том, что текст который мы заменяем прекрасно экранируется, а вот который мы вставляем он идет чистым текстом, и все спецсимволы попросту удаляются. Для выхода из этого положения мы используем малоизвестную возможность sed, возможность работы в hex-16.

Таким образом мы убиваем сразу 2 зайцев, мы можем с легкостью конвертировать строку любой сложности в сед, не ожидая проблем с спецсимволами. А так же можем вставлять их в вывод, не опасаясь остановки самого скрипта.

Заменяем текст со спец символами

sed -i ‘s/\x3Chello\x3E\,/hello world,/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

Оставить комментарий

Комментарии (2)

  1. Eugeny 29.06.2017 Ответить
    Посоветуйте потоковый редактор не SED.
    Нужно после <body ... Тега вставлять сниппет. Все делать из командного файла
  2. Виктор
    Виктор 20.09.2021 Ответить
    Закиньте пример было стало сюда,
    я вам покажу как это сделать в sed

    Что касается вариантов то лучше всего именно sed поскольку он есть всегда и везде, лучше 1 раз приучиться чем каждый раз пытаться поставить нестандартное по на разные сервера.
    Однако все зависит от конкретной задачи