如何使用 sed 在每组 CJK 字符 ([o200-o377]) 之前添加换行符



我有一个包含中英文混合文本的文档,例如:

This is some text.你好。This is some more text.

我只需要在中文文本的每个部分之前放置换行符,或者[o200-o377]。 例如:

This is some text.
你好。This is some more text.

我试过这个,但它把每个汉字放在独特的行上:

LC_ALL="POSIX" sed 's/[o200-o377]/n&/g'

如何在每个带有sed的 CJK 字符之前添加换行符?

您实际上是将此类字符的每个实例替换为换行符和匹配的内容。 您似乎希望替换至少一个此类字符的每个序列,后跟一个换行符,后跟匹配的内容。

s/[o200-o377]+/n&/g

(注意:sed可能期望大约 POSIX 正则表达式 - 我的声明"应该支持 POSIX.2 BRE,但它们并不完全是因为性能问题。因此,+是正确的。使用"扩展"(sed -r),简单地+,因此s/[o200-o377]+/n&/g,是正确的。

最新更新