Частичная замена командой sed - PullRequest
1 голос
/ 19 июня 2020

У нас есть файл с некоторыми десятичными символами utf-16, и мы хотели бы заменить их следующим образом

Test Line in a file \u343- ? some random words  \u1233? 300 \u241? \u208?\cell

Требуемый вывод:

Test Line in a file \u343- ? some random words  UTF16-1233| 300 UTF16-241| UTF16-208|\cell

Требование: чтобы изменить \ u [0-9] +? на UTF16- [0-9] + | Заменить начальный \ u на UTF16- и окончание? с трубкой |, Обратите внимание, есть ли между \ u и? Символ не di git. это не следует считать

1 Ответ

2 голосов
/ 19 июня 2020

Используя sed для изменения файла на месте, вы можете:

  • Сопоставить \\u([0-9]+)\?:

    Сопоставить литерал \u, сопоставить и захватить один или больше цифр соответствует литералу ?.

  • Заменить UTF16-\1:

    Заменить строкой UTF16-, за которой следует захваченная группа.


$ sed -i -E 's/\\u([0-9]+)\?/UTF16-\1|/g' file
$ cat file
Test Line in a file \u343- ? some random words  UTF16-1233| 300 UTF16-241| UTF16-208|\cell
...