题目描述(统计词频)

写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率。
为了简单起见,你可以假设:
1.words.txt只包括小写字母和 ' ' 。
2.每个单词只由小写字母组成。
3.单词间由一个或多个空格字符分隔

示例

file.txt内容

the day is sunny the the
the sunny is is

输出(按词频降序排列)

the 4
is 3
sunny 2
day 1

题解

awk '{for(i=1;i<=NF;i++){res[$i]+=1}}END{for(k in res){print k" "res[k]} }' words.txt | sort -nr -k2

题目描述(有效的电话号码)

给定一个包含电话号码列表(一行一个电话号码)的文本文件 file.txt,写一个 bash 脚本输出所有有效的电话号码。
你可以假设一个有效的电话号码必须满足以下两种格式: (xxx) xxx-xxxx 或 xxx-xxx-xxxx。(x 表示一个数字)
你也可以假设每行前后没有多余的空格字符。

示例

file.txt内容如下

987-123-4567
123 456 7890
(123) 456-7890

输出

987-123-4567
(123) 456-7890

题解

awk '/^([0-9]{3}-|\([0-9]{3}\) )[0-9]{3}-([0-9]{4})$/' file.txt
grep -P '^(\d{3}-|\(\d{3}\) )\d{3}-\d{4}$' file.txt