我有一份包含中英文本混合的文件,例如:
This is some text.你好。This is some more text.
我只需要在中文文本的每一部分之前放置换行符,或[\o200-\o377]
。 E.g:
This is some text.
你好。This is some more text.
我尝试了这个,但它将每个汉字放在一个独特的行上:
LC_ALL="POSIX" sed 's/[\o200-\o377]/\n&/g'
如何在使用sed
的每个CJK字符之前添加换行符?
答案 0 :(得分:3)
您实际上是用换行符替换了此类字符的每个实例以及匹配的内容。您似乎想要替换至少一个此类字符的每个序列,并使用换行符后跟匹配的内容。
s/[\o200-\o377]\+/\n&/g
(注意:sed
可能需要大约posix regex-mine声明“应该支持POSIX.2 BRE,但它们并不完全是因为性能问题。”因此,\+
是正确的。使用“扩展”(sed -r
),只需+
,因此s/[\o200-\o377]+/\n&/g
就是正确的。)