AWK:从一个文本文件中的字符频率? [英] Awk: Characters-frequency from one text file?

查看:116
本文介绍了AWK:从一个文本文件中的字符频率?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

给定一个multilangual .txt文件如:

 但哪一个Esope冬青庶子
但如果是생지옥이군
지옥이
지옥

我是你的爸爸!
爸爸!!
你不会的!

我算作空格分隔的词使用这个的awk 字频率:

  $ AWK'{a [$ 1] ++} END {为(在K)打印[K],K}'RS =| \\ N的myfile.txt |分类

获取优雅的:

  1생
1군
1庶子
1 Esope
1冬青
1
1不
1我
1是
1会
2이
2但是,
2
2,其中
2你
2的
3옥
4지
4爸
5!

如何去改变它来计算字符频率?


编辑:对于字符频率,我用(@ Sudo_O的答案):

  $的grep -o'\\ S'myfile.txt的| AWK'{a [$ 1] ++} END {为(在K)打印[K],K}'|排序> myoutput.txt

对于字频,使用:

  $的grep -o'\\ W *'的myfile.txt | AWK'{a [$ 1] ++} END {为(在K)打印[K],K}'|排序> myoutput.txt


解决方案

一个方法:

  $的grep -o'\\ S'文件| AWK'{a [$ 1] ++} END {为(在K)打印[K],K}'
3옥
4小时
2 U
2我
3 B
5!
2瓦特
4爸
1군
4지
1年
2升
1 C
1会
2你
1是
2
1不
2이
2 O
1个p
2的
1天
1생
3 R

4秒
1我
4吨

使用重定向输出保存到一个文件:

  $的grep -o'\\ S'文件| AWK'{a [$ 1] ++} END {为(在K)打印[K],K}'>产量

和为有序输出:

  $的grep -o'\\ S'文件| AWK'{a [$ 1] ++} END {为(在K)打印[K],K}'|排序>产量

Given a multilangual .txt files such as:

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

I counted space-separated words' word-frequency using this Awk function :

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

Getting the elegant :

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

How to change it to count characters-frequency ?


EDIT: For Characters-frequency, I used (@Sudo_O's answer):

$ grep -o '\S' myfile.txt | awk '{a[$1]++}END{for(k in a)print a[k],k}' | sort > myoutput.txt

For word-frequency, use:

$ grep -o '\w*' myfile.txt | awk '{a[$1]++}END{for(k in a)print a[k],k}' | sort > myoutput.txt

解决方案

One method:

$ grep -o '\S' file | awk '{a[$1]++}END{for(k in a)print a[k],k}' 
3 옥
4 h
2 u
2 i
3 B
5 !
2 w
4 爸
1 군
4 지
1 y
2 l
1 E
1 會
2 你
1 是
2 a
1 不
2 이
2 o
1 p
2 的
1 d
1 생
3 r
6 e
4 s
1 我
4 t

Use redirection to save the output to a file:

$ grep -o '\S' file | awk '{a[$1]++}END{for(k in a)print a[k],k}' > output

And for sorted output:

$ grep -o '\S' file | awk '{a[$1]++}END{for(k in a)print a[k],k}' | sort > output

这篇关于AWK:从一个文本文件中的字符频率?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆