2013-03-24 7 views
0

Учитывая .txt, файлы с слов, разделенных пробелами, таких как:Awk: Что не так с персонажами CJK? #Korean

But where is Esope the holly Bastard 
But where is 생 지 옥 이 군 
지 옥 이 
지 옥 
지 
我 是 你 的 爸 爸 ! 
爸 爸 ! ! ! 
你 不 會 的 ! 

И функция Awk:

cat /pathway/to/your/file.txt | tr ' ' '\n' | sort | uniq -c | awk '{print $2" "$1}' 

Я получаю следующий вывод в моей консоли который является недействительным для корейских слов (действителен для слов с английским и китайским пространством)

생 16 
Bastard 1 
But 2 
Esope 1 
holly 1 
is 2 
the 1 
where 2 
不 1 
你 2 
我 1 
是 1 
會 1 
爸 4 
的 2 

Как это работает для корейских слов? Примечание: У меня на самом деле 300 000 строк и около 2 миллионов слов.


EDIT: Используется ответ:

$ awk '{a[$1]++}END{for(k in a)print a[k],k}' RS=" |\n" myfile.txt | sort > myfileout.txt 

ответ

2

Один awk сценарий может справиться с этим легко и будет гораздо более эффективным, чем ваш текущий трубопровод:

$ awk '{a[$1]++}END{for(k in a)print k,a[k]}' RS=" |\n" file 
옥 3 
Bastard 1 
! 5 
爸 4 
군 1 
지 4 
But 2 
會 1 
你 2 
the 1 
是 1 
不 1 
이 2 
Esope 1 
的 2 
holly 1 
where 2 
생 1 
我 1 
is 2 

Если вы хотите сохранить результатов в другой файл, который вы можете использовать перенаправление:

$ awk '{a[$1]++}END{for(k in a)print k,a[k]}' RS=" |\n" file > outfile 
+0

Очень просто: Удивительно! Спасибо вам. – Hugolpz

+0

Этот ответ [поясняется в деталях там] (http://stackoverflow.com/questions/15598935/awk-how-to-output-result-into-myfile-txt-words-frequency/15600106?#15600106) – Hugolpz

 Смежные вопросы

  • Нет связанных вопросов^_^