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

英文/中文文本的Awk/Sed解决方案?,awk,sed,chinese-locale,Awk,Sed,Chinese Locale,我有一个文本文件。有几百行。每行文字可以是英文,也可以是中文,但不能同时是英文(也有一些例外,但可能小于这一行文字可能有助于: awk '/[^\x00-\x7f]/{print >"cn.txt";next}{print > "en.txt"}' file 它将生成两个文件cn.txt和en.txt。它检查该行是否至少包含一个非ascii字符,如果找到一个,该行将被视为中文行 小测试: kent$ cat f this is line1 in english 你好 this

我有一个文本文件。有几百行。每行文字可以是英文,也可以是中文,但不能同时是英文(也有一些例外,但可能小于这一行文字可能有助于:

awk '/[^\x00-\x7f]/{print >"cn.txt";next}{print > "en.txt"}' file
它将生成两个文件
cn.txt和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
kent$f类
这是英语的第一行
你好
这是英语的第二行
你好你好
这是英语的第三行
这是英语的第四行
你好你好你好
肯特$awk'/[^\x00-\x7f]/{print>“cn.txt”;next}{print>“en.txt”}f
肯特$head*.txt

如果该行只包含ASCII(通过字符范围),考虑它是英语吗?