2015-08-19 4 views
0

У меня есть текстовый файл. Есть сотни линий. Каждая строка находится либо на английском, либо на китайском, но не на обоих (есть несколько исключений, но, возможно, меньше < 10, поэтому они доступны для поиска и управления). Одна строка может содержать несколько предложений. То, что я хотел бы получить, это два файла; один на английском; другой - на китайском.Решение Awk/Sed для английского/китайского текста?

Линии имеют тенденцию чередовать языки, но не всегда. Иногда на английском может быть две строки, а на китайской - одна строка.

Есть ли способ использовать Sed или Awk для разделения языков на два разных текстовых файла?

+0

Если строка содержит только ASCII (через диапазон символов), считают английский? – user2864740

ответ

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 
Смежные вопросы