对数据分类时,对sort结果加一点附加信息很有必要,对其他用户尤其如此。使用awk可以轻松完成这一功能。比如说采用上面最低租金的例子,需要将sort结果管道输出到awk,不要忘了用冒号作域分隔符,显示提示信息和实际数据。
[sam@chenwy sam]$ sort -t: -r -k4 video.txt |tail -1 | awk -F: '{print "Worst rental", $1, "has been rented" $3}' Worst rental Alien has been rented119 将两个分类文件合并 将文件合并前,它们必须已被分类。合并文件可用于事务处理和任何种类的修改操作。 下面这个例子,因为忘了把两个家电名称加入文件,它们被放在一个单独的文件里,现在将之并入一个文件。分类的合并格式为‘ sort -m sorted_file1 sorted_file2,下面是包含两个新家电名称的文件列表,它已经分类完毕:
[sam@chenwy sam]$ cat video2.txt Crimson Tide:134:2031 Die Hard:152:2981 使用-m +o。将这个文件并入已存在的分类文件video.sort,要以名称域进行分类,实际上没有必要加入+ o,但为了保险起见,还是加上的好。
[sam@chenwy sam]$ sort -t: -m +0 video2.txt video.txt Boys in Company C:HK48:192:2192 Alien:HK57:119:1982 Crimson Tide:134:2031 Die Hard:152:2981 The Hill:KL223:63:2972 Aliens:HK11:532:4892 Star Wars:HK38:301:4102 A Few Good Men:KL87:445:5851 Toy Story:HK65:239:3972 系统sort sort可以用来对/etc/passwd文件中用户名进行分类。这里需要以第1域即注册用户名分类,然后管道输出结果到awk,awk打印第一域。
[sam@chenwy sam]$ cat passwd | sort -t: +0 | awk -F: '{print $1}' adm apache bin chenwy daemon desktop ....... sort还可以用于d f命令,以递减顺序打印使用列。下面是一般d f输出。
[sam@chenwy sam]$ df 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/sda2 5162828 2289460 2611108 47% / /dev/sda1 497829 13538 458589 3% /boot none 99352 0 99352 0% /dev/shm 使用- b选项,忽略分类域前面的空格。使用域4(+ 4),即容量列将分类求逆,最后得出文件系统自由空间的清晰列表。
[sam@chenwy sam]$ df | sort -b -r +4 文件系统 1K-块 已用 可用 已用% 挂载点 /dev/sda2 5162828 2289460 2611108 47% / /dev/sda1 497829 13538 458589 3% /boot none 99352 0 99352 0% /dev/shm 在一个文本文件中存入所有I P地址的拷贝,这样查看本机I P地址更容易一些。有时如果管理员权限下,就需要将此文件分类。将I P地址按文件中某种数值次序分类时,需要指定域分隔符为句点。这里只需关心I P地址的最后一段。分类应从此域即域3开始,未分类文件如下:
[sam@chenwy sam]$ vi iplist [sam@chenwy sam]$ cat iplist 193.132.80.123 dave tansley 193.132.80.23 HP printer 2nd floor 193.132.80.198 JJ. Peter's scanner 193.132.80.38 SPARE 193.132.80.78 P.Edron 分类后结果如下:
[sam@chenwy sam]$ sort -t. +3n iplist 193.132.80.23 HP printer 2nd floor 193.132.80.38 SPARE 193.132.80.78 P.Edron 193.132.80.123 dave tansley 193.132.80.198 JJ. Peter's scanner sort教程到此结束 |