从结构化文本文件中提取数据
Shell脚本真正好用的地方是:当我们想修改脚本让它做点不一样的事,例如插入由key:jobtilte文件而来的工作职称时,只需要修改最后的管道。
join -t: $PERSON /etc/passwd.job-title |
join -t: - $OFFICE |
join -t: - $TELEPHONE |
cut -d: -f 2- |
sort -t: -k1,1 -k3,3 -k4,4 |
awk -F: '{ printf("%-39s\t%-23s\t%s\t%s\n", $1,$2,$3,$4) }'
针对Web的结构型数据
单词列表
曾经有个趣闻,是说,1983到1987年之间,贝尔实验室的研究专员某某写了篇专栏《Programming Pearls》。专栏中有篇文章下的转帖这么写到:写一个文字处理程序,找出n个出现最频繁的单词,并在输出结果的列表上加入它们出现的次数,按照次数由大到小排序。
后来一位资深的研究员提供了一个6个步骤UNIX解决方案,仅需进分钟便能开发完成。这个程序阐明了UNIX工具程序的处理方式是强大的:将复杂的问题切分成数个较简单的部分,简单到你已经知道这个部分该怎么处理。
示例:
单词出现频率过滤器:
#! /bin/sh
tr -cs A-Za-z\' '\n' | 将非字母字符置换成换行符号
tr A-Z a-z | 所有大写字母转为小写
sort | 由小而大排序单词
uniq -c | 去除重复,并显示其计数
sort -k1,1nr -k2 | 计数有大而小排序后,再按照单词由小而大排序
sed ${1:-25}q 显示前n行(默认为25)
专注下一讲哦,下节讲什么?让少良告诉你们吧
啊,对,讲讲变量、判断和重复动作