文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>文件的合并分割工具sort,head,tail.......

文件的合并分割工具sort,head,tail.......

时间:2009-07-16  来源:dolinux

1.sort应用。将文件不同的域按照不同的列序列分类。
  有文件test:
ddd:jjj:1
aaa:bbb:2
ccc:ddd:3
bbb:bbb:4
aaa:ccc:5
eee:bbb:1
aaa:bbb:2

-k :指定分类键
-t :指定域分隔符
-u :去除重复行
-m :合并两个分类文件
-r :逆序排列

sort默认是由低到高排序,需要由高到低排序时用-r参数就可以了。
指定分类键有两种方法:
sort -t: +2 test
sort -t: -k3 test
    这两种方法一般来说是等价的。主要跟我们的环境设置有关。我目前还不知道这个环境如何设置,所以我就用第二种方法。

 1》首先按照第二域排序,当第二域相同时按照第一域排序。
 
along@along-laptop:~/code/shell/sort$ sort -t: -k2,2 -k1,1 test
aaa:bbb:2
aaa:bbb:2
bbb:bbb:4
eee:bbb:1
aaa:ccc:5
ccc:ddd:3
ddd:jjj:1

这里要指定结束域。否则如果第二域若相同,他不会按照第一域去排序,而是依次去按照第三,第四域排序。
比如:
along@along-laptop:~/code/shell/sort$ sort -t: -k2 -k1,1 test
eee:bbb:1
aaa:bbb:2
aaa:bbb:2
bbb:bbb:4
aaa:ccc:5
ccc:ddd:3
ddd:jjj:1

2》-u去除重复行。
along@along-laptop:~/code/shell/sort$ sort -u -t: -k2 -k1,1 test
eee:bbb:1
aaa:bbb:2
bbb:bbb:4
aaa:ccc:5
ccc:ddd:3
ddd:jjj:1

3》-r逆序。
along@along-laptop:~/code/shell/sort$ sort -r -t: -k3 test
aaa:ccc:5
bbb:bbb:4
ccc:ddd:3
aaa:bbb:2
aaa:bbb:2
eee:bbb:1
ddd:jjj:1
按照第三域逆序排列。

2.pos的问题。即指定关键字,主要用到的是-k选项。
比如:
along@along-laptop:~/code/shell/sort$ sort -t: -k2.2,2 -k1.2 test
aaa:bbb:2
aaa:bbb:2
bbb:bbb:4
eee:bbb:1
aaa:ccc:5
ccc:ddd:3
ddd:jjj:1
这是按照第二域的第二个字符排序,当出现相同时就按照第一域的第二个字符排序。

3.head 和 tail

head -n 显示文件的前n行
tail -n显示文件的后n行
缺省的head和tail都是显示10行内容。
例如:
1》显示编号最大的一行:
along@along-laptop:~/code/shell/sort$ sort -r -t: -k3 test | head -1
aaa:ccc:5
首先用sort逆序排列,然后利用head提取第一行。

2》显示编号前三大的信息。
along@along-laptop:~/code/shell/sort$ sort -r -t: -k3 test | head -3
aaa:ccc:5
bbb:bbb:4
ccc:ddd:3

tail的用法和head类似。
例如:找到编号最小的一行。
along@along-laptop:~/code/shell/sort$ sort  -t: -r -k3 test | tail -1 | awk -F: '{print "编号最小的是"$1",他的编号是"$3}'
编号最小的是ddd,他的编号是1

4.-m参数:合并两个分类文件。
这里test11和test22的分类方法都是sort -t: -k2,2 -k1,1 filename
along@along-laptop:~/code/shell/sort$ cat test11
aaa:bbb:2
aaa:bbb:2
bbb:bbb:4
eee:bbb:1
aaa:ccc:5
ccc:ddd:3
ddd:jjj:1

along@along-laptop:~/code/shell/sort$ cat test22
aaa:bbb:22
fff:nnn:21

合并后效果:
along@along-laptop:~/code/shell/sort$ sort -t: -m  test11 test22
aaa:bbb:2
aaa:bbb:2
aaa:bbb:22
bbb:bbb:4
eee:bbb:1
aaa:ccc:5
ccc:ddd:3
ddd:jjj:1
fff:nnn:21

按照已经排好序的文件,将两个文件合并。
 
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载