部分替换为 sed 命令

Partial replace with sed command

我们有一个包含一些 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 和 ? 之间是否有任何非数字字符不应该考虑

使用sed就地修改文件,可以:

  • 匹配\u([0-9]+)\?:

    匹配文字\u,匹配并捕获一个或多个数字,匹配文字?

  • 替换UTF16-:

    替换为字符串 UTF16- 后跟捕获的组。


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