英文/中文文本的awk / Sed解决方案?

时间:2015-08-19 07:38:20

标签: awk sed chinese-locale

我有一个文本文件。有数百行。每一行都是英文或中文字符,但不是两者(有一些例外但可能少于<10,因此这些是可发现和可管理的)。单行可能包含多个句子。我最终想要的是两个文件;一个英文;另一个是中文。

这些行倾向于替代语言,但并非总是如此。有时英语可能有两行,后面是中文的一行。

有没有办法使用Sed或Awk将语言分成两个不同的文本文件?

1 个答案:

答案 0 :(得分:1)

这个单行可能会有所帮助:

awk '/[^\x00-\x7f]/{print >"cn.txt";next}{print > "en.txt"}' file

它将生成两个文件cn.txt and en.txt。它检查该行是否包含至少一个非ascii字符,如果找到一个,该行将被视为中文行。

小测试:

kent$  cat f
this is line1 in english 
你好
this is line2 in english 
你好你好
this is line3 in english 
this is line4 in english 
你好你好你好

kent$  awk '/[^\x00-\x7f]/{print >"cn.txt";next}{print > "en.txt"}' f

kent$  head *.txt
==> cn.txt <==
你好
你好你好
你好你好你好

==> en.txt <==
this is line1 in english 
this is line2 in english 
this is line3 in english 
this is line4 in english