#regex #sed #freebsd
Вопрос:
Я хочу:
- префиксный текст, начинающийся с
!
символа в строке сESC E
(являетсяESC
восьмеричным кодом33
) - суффикс над текстом с
ESC F
в конце строки.
Это то, что я пробовал:
sed
Это ошибка, которую я получаю:
$ echo "test line ! This part shall be enclosed with ESC commands" | sed
Если я удалю $
знак, будет видно, что текст обнаружен и заключен, но sed
не может вставить ESC
символы.
$ echo "test line ! This part shall be enclosed with ESC commands" | sed 's/(!.*)/33E133F/'
test line 033E! This part shall be enclosed with ESC commands033F
Я использую FreeBSD 12 sed
, которая, как ожидается, будет дополнением спецификации IEEE Std 1003.2 POSIC.2 согласно справочной странице.
Ответ №1:
Подавайте $'..'
заявку только на необходимую часть:
$ s='test line ! This part shall be enclosed with ESC commands'
$ echo "$s" | sed 's/(!.*)/'
Не уверен насчет других версий, но на GNU sed
, вы можете использовать шестнадцатеричные xHH
и восьмеричные oNNN
(обратите внимание o
) побеги напрямую, так что вы можете сделать:
$ echo "$s" | sed 's/(!.*)/x1BE1x1BF/' | cat -v
test line ^[E! This part shall be enclosed with ESC commands^[F
$ echo "$s" | sed 's/(!.*)/o033E1o033F/' | cat -v
test line ^[E! This part shall be enclosed with ESC commands^[F
Это ошибка, которую я получаю:
s/(!.*)/33E133F/'
Если я удалю $
знак, будет видно, что текст обнаружен и заключен, но sed
не может вставить ESC
символы.
Я использую FreeBSD 12 sed
, которая, как ожидается, будет дополнением спецификации IEEE Std 1003.2 POSIC.2 согласно справочной странице.
Ответ №1:
Подавайте $'..'
заявку только на необходимую часть:
Не уверен насчет других версий, но на GNU sed
, вы можете использовать шестнадцатеричные xHH
и восьмеричные oNNN
(обратите внимание o
) побеги напрямую, так что вы можете сделать:
s/(!.*)/33E133F/'
sh: Syntax error: Bad escape sequence
Если я удалю $
знак, будет видно, что текст обнаружен и заключен, но sed
не может вставить ESC
символы.
Я использую FreeBSD 12 sed
, которая, как ожидается, будет дополнением спецификации IEEE Std 1003.2 POSIC.2 согласно справочной странице.
Ответ №1:
Подавайте $'..'
заявку только на необходимую часть:
Не уверен насчет других версий, но на GNU sed
, вы можете использовать шестнадцатеричные xHH
и восьмеричные oNNN
(обратите внимание o
) побеги напрямую, так что вы можете сделать:
s/(!.*)/33E133F/'
Это ошибка, которую я получаю:
Если я удалю $
знак, будет видно, что текст обнаружен и заключен, но sed
не может вставить ESC
символы.
Я использую FreeBSD 12 sed
, которая, как ожидается, будет дополнением спецификации IEEE Std 1003.2 POSIC.2 согласно справочной странице.
Ответ №1:
Подавайте $'..'
заявку только на необходимую часть:
Не уверен насчет других версий, но на GNU sed
, вы можете использовать шестнадцатеричные xHH
и восьмеричные oNNN
(обратите внимание o
) побеги напрямую, так что вы можете сделать:
33»E1′
Не уверен насчет других версий, но на GNU sed
, вы можете использовать шестнадцатеричные xHH
и восьмеричные oNNN
(обратите внимание o
) побеги напрямую, так что вы можете сделать:
s/(!.*)/33E133F/’Это ошибка, которую я получаю:
Если я удалю $
знак, будет видно, что текст обнаружен и заключен, но sed
не может вставить ESC
символы.
Я использую FreeBSD 12 sed
, которая, как ожидается, будет дополнением спецификации IEEE Std 1003.2 POSIC.2 согласно справочной странице.
Ответ №1:
Подавайте $'..'
заявку только на необходимую часть:
Не уверен насчет других версий, но на GNU sed
, вы можете использовать шестнадцатеричные xHH
и восьмеричные oNNN
(обратите внимание o
) побеги напрямую, так что вы можете сделать:
s/(!.*)/33E133F/’
sh: Syntax error: Bad escape sequenceЕсли я удалю $
знак, будет видно, что текст обнаружен и заключен, но sed
не может вставить ESC
символы.
Я использую FreeBSD 12 sed
, которая, как ожидается, будет дополнением спецификации IEEE Std 1003.2 POSIC.2 согласно справочной странице.
Ответ №1:
Подавайте $'..'
заявку только на необходимую часть:
Не уверен насчет других версий, но на GNU sed
, вы можете использовать шестнадцатеричные xHH
и восьмеричные oNNN
(обратите внимание o
) побеги напрямую, так что вы можете сделать:
s/(!.*)/33E133F/’
Это ошибка, которую я получаю:
Если я удалю $
знак, будет видно, что текст обнаружен и заключен, но sed
не может вставить ESC
символы.
Я использую FreeBSD 12 sed
, которая, как ожидается, будет дополнением спецификации IEEE Std 1003.2 POSIC.2 согласно справочной странице.
Ответ №1:
Подавайте $'..'
заявку только на необходимую часть:
Не уверен насчет других версий, но на GNU sed
, вы можете использовать шестнадцатеричные xHH
и восьмеричные oNNN
(обратите внимание o
) побеги напрямую, так что вы можете сделать:
33F»/’ | cat -v
test line ^[E! This part shall be enclosed with ESC commands^[F
Не уверен насчет других версий, но на GNU sed
, вы можете использовать шестнадцатеричные xHH
и восьмеричные oNNN
(обратите внимание o
) побеги напрямую, так что вы можете сделать:
s/(!.*)/33E133F/’Это ошибка, которую я получаю:
Если я удалю $
знак, будет видно, что текст обнаружен и заключен, но sed
не может вставить ESC
символы.
Я использую FreeBSD 12 sed
, которая, как ожидается, будет дополнением спецификации IEEE Std 1003.2 POSIC.2 согласно справочной странице.
Ответ №1:
Подавайте $'..'
заявку только на необходимую часть:
Не уверен насчет других версий, но на GNU sed
, вы можете использовать шестнадцатеричные xHH
и восьмеричные oNNN
(обратите внимание o
) побеги напрямую, так что вы можете сделать:
s/(!.*)/33E133F/’
sh: Syntax error: Bad escape sequenceЕсли я удалю $
знак, будет видно, что текст обнаружен и заключен, но sed
не может вставить ESC
символы.
Я использую FreeBSD 12 sed
, которая, как ожидается, будет дополнением спецификации IEEE Std 1003.2 POSIC.2 согласно справочной странице.
Ответ №1:
Подавайте $'..'
заявку только на необходимую часть:
Не уверен насчет других версий, но на GNU sed
, вы можете использовать шестнадцатеричные xHH
и восьмеричные oNNN
(обратите внимание o
) побеги напрямую, так что вы можете сделать:
s/(!.*)/33E133F/’
Это ошибка, которую я получаю:
Если я удалю $
знак, будет видно, что текст обнаружен и заключен, но sed
не может вставить ESC
символы.
Я использую FreeBSD 12 sed
, которая, как ожидается, будет дополнением спецификации IEEE Std 1003.2 POSIC.2 согласно справочной странице.
Ответ №1:
Подавайте $'..'
заявку только на необходимую часть:
Не уверен насчет других версий, но на GNU sed
, вы можете использовать шестнадцатеричные xHH
и восьмеричные oNNN
(обратите внимание o
) побеги напрямую, так что вы можете сделать: