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)