目录

力扣shell题

192. 统计词频

写一个 bash 脚本以统计一个文本文件 words.txt 中每个单词出现的频率。

1
cat words.txt | xargs -n 1 | sort | uniq -c | sort -nr | awk '{print $2, $1}'

xargs 分割字符串 -n 1表示每行输出一个 可以加-d指定分割符

要使用uniq统计词频需要被统计文本相同字符前后在一起,所以先排序 uniq -c 表示同时输出出现次数

sort -nr 其中-n表示把数字当做真正的数字处理(当数字被当做字符串处理,会出现11比2小的情况)

words.txt:

1
2
3
4
the day is sunny the the
the sunny is is
a a a a a a a a a a a a a a
b b b b

结果:

1
2
3
4
5
6
a 14
the 4
b 4
is 3
sunny 2
day 1

193. 有效电话号码

给定一个包含电话号码列表(一行一个电话号码)的文本文件 file.txt,写一个 bash 脚本输出所有有效的电话号码。

你可以假设一个有效的电话号码必须满足以下两种格式: (xxx) xxx-xxxx 或 xxx-xxx-xxxx。(x 表示一个数字)

你也可以假设每行前后没有多余的空格字符。

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