难度:4;预计完成时间:1小时

[info] 正则表达式和grep

统计words文件 (/usr/share/dict/words) 中包含至少三个a 且不以's 结尾的单词个数。

解决这个问题,首先需要把两个条件的数据整理出来,整理的办法可以近似地认为是Linux的管道,首先把文件输出出来,用grep命令进行筛选。 还有一个问题,就是如何表示三个a呢,我们可以把单词拆成四个部分,前面三个部分都是若干个非a字母加上一个a,最后一个部分是任意的。 统计的方法可以参考Linux的wc指令。大小写的处理可以参考tr命令。

[info] awk与单行脚本

计算文本文件第三列中所有数的和(可能比同等作用的 Python 代码快三倍且代码量少三倍)

awk '{ x += $3 } END { print x }' myfile

尝试去运行这个脚本,分析脚本运行的原因

下面的不是题目,是一个信息,同学们可以自行阅读。

[info] 文本处理

计算文本文件第三列中所有数的和(可能比同等作用的 Python 代码快三倍且代码量少三倍) 当你需要对文本文件做集合交、并、差运算时,sort 和 uniq 会是你的好帮手。具体例子请参照代码后面的,此处假设 a 与 b 是两内容不同的文件。这种方式效率很高,并且在小文件和上 G 的文件上都能运用(注意尽管在 /tmp 在一个小的根分区上时你可能需要 -T 参数,但是实际上 sort 并不被内存大小约束),参阅前文中关于 LC_ALL 和 sort 的 -u 参数的部分。

sort a b | uniq > c   # c 是 a 并 b
sort a b | uniq -d > c   # c 是 a 交 b
sort a b b | uniq -u > c   # c 是 a - b

来源于 link

results matching ""

    No results matching ""