我有一个文本文件。有数百行。每一行都是英文或中文字符,但不是两者(有一些例外但可能少于<10,因此这些是可发现和可管理的)。单行可能包含多个句子。我最终想要的是两个文件;一个英文;另一个是中文。
这些行倾向于替代语言,但并非总是如此。有时英语可能有两行,后面是中文的一行。
有没有办法使用Sed或Awk将语言分成两个不同的文本文件?
答案 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