首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

Linux/Unix排序、归拢与分割

2013-03-06 
Linux/Unix排序、合并与分割排序:sort[oracle@localhost sort.folder]$ sort -c ls.out sort: ls.out:2: di

Linux/Unix排序、合并与分割
排序:sort[oracle@localhost sort.folder]$ sort -c ls.out sort: ls.out:2: disorder: -rw-r--r-- 1 oracle oinstall 2653 Feb 23 21:30 awk.out
表示未分类,使用 sort ls.out > ls.sort 将之分类重试:[oracle@localhost sort.folder]$ sort ls.out > ls.sort[oracle@localhost sort.folder]$ sort -c ls.sort
-k5表示根据第5行按降序排列:[oracle@localhost sort.folder]$ sort -k 5 ls.out total 80-rw-r--r-- 1 oracle oinstall    0 Feb 24 14:21 ls.out-rw-r--r-- 1 oracle oinstall    0 Feb 24 14:21 sed.sh-rwxr-xr-x 1 oracle oinstall   26 Nov 10 22:30 main.sh-rwxrwxrwx 1 oracle oinstall   44 Jan  7 22:39 shelltest.sh-rwxr-xr-x 1 oracle oinstall   99 Feb 23 11:51 test1.sh-rwxr-xr-x 1 oracle oinstall   99 Feb 23 11:52 test2.sh-rw-r--r-- 1 oracle oinstall  216 Feb 23 11:53 blank_file-rwxr--r-- 1 oracle oinstall  642 Feb 15 18:43 find.sh-rwxr--r-- 1 oracle oinstall 2250 Feb 23 21:20 awk.sh-rw-r--r-- 1 oracle oinstall 2653 Feb 23 21:30 awk.outdrwxr-xr-x 2 oracle oinstall 4096 Feb 15 17:56 folder
-k5表示根据第5行按降升序排列:[oracle@localhost sort.folder]$ sort -k5 -r ls.out drwxr-xr-x 2 oracle oinstall 4096 Feb 15 17:56 folder-rw-r--r-- 1 oracle oinstall 2653 Feb 23 21:30 awk.out-rwxr--r-- 1 oracle oinstall 2250 Feb 23 21:20 awk.sh-rwxr--r-- 1 oracle oinstall  642 Feb 15 18:43 find.sh-rw-r--r-- 1 oracle oinstall  216 Feb 23 11:53 blank_file-rwxr-xr-x 1 oracle oinstall   99 Feb 23 11:52 test2.sh-rwxr-xr-x 1 oracle oinstall   99 Feb 23 11:51 test1.sh-rwxrwxrwx 1 oracle oinstall   44 Jan  7 22:39 shelltest.sh-rwxr-xr-x 1 oracle oinstall   26 Nov 10 22:30 main.sh-rw-r--r-- 1 oracle oinstall    0 Feb 24 14:21 sed.sh-rw-r--r-- 1 oracle oinstall    0 Feb 24 14:21 ls.outtotal 80Linux/Unix排序、归拢与分割
返回排序后的第一行:[oracle@localhost sort.folder]$ sort -k5 -r ls.out | head -1drwxr-xr-x 2 oracle oinstall 4096 Feb 15 17:56 folder
返回排序后的最后两行:[oracle@localhost sort.folder]$ sort -k5 -r ls.out | tail -2-rw-r--r-- 1 oracle oinstall    0 Feb 24 14:21 ls.outtotal 80
awk使用sort的输出结果:[oracle@localhost sort.folder]$ sort -k5 -r ls.out | head -2 | awk '{print "file_name:"$9 " size:"$5}' file_name:folder size:4096file_name:awk.out size:2653
某个文件中的内容如下:[oracle@localhost sort.folder]$ cat iplist 193.132.80.123 dave tansley193.132.80.23  HP printer 2nd floor193.132.80.198 JJ. Peter's scanner193.132.80.38  SPARE193.132.80.78  P.Edron需要根据ip地址的最后一段进行排序:[oracle@localhost sort.folder]$ sort -t. -k4 -r -n iplist193.132.80.198 JJ. Peter's scanner193.132.80.123 dave tansley193.132.80.78  P.Edron193.132.80.38  SPARE193.132.80.23  HP printer 2nd floor这里-r降序,-t.表示根据.进行分类,-n表示排序的是数值类型
uniq去重复用法:其选项含义:-u   只显示不重复行。-d   只显示有重复数据行,每种重复行只显示其中一行-c   打印每一重复行出现次数。-f   n为数字,前n个域被忽略。
对已经排序的文件内容进行去重操作:[oracle@localhost sort.folder]$ cat ls.sort total 80total 80-rw-r--r-- 1 oracle oinstall    0 Feb 24 14:21 ls.out-rw-r--r-- 1 oracle oinstall    0 Feb 24 14:21 ls.out-rw-r--r-- 1 oracle oinstall    0 Feb 24 14:21 sed.sh-rw-r--r-- 1 oracle oinstall    0 Feb 24 14:21 sed.sh-rwxr-xr-x 1 oracle oinstall   26 Nov 10 22:30 main.sh-rwxr-xr-x 1 oracle oinstall   26 Nov 10 22:30 main.sh-rwxrwxrwx 1 oracle oinstall   44 Jan  7 22:39 shelltest.sh-rwxrwxrwx 1 oracle oinstall   44 Jan  7 22:39 shelltest.sh-rwxr-xr-x 1 oracle oinstall   99 Feb 23 11:51 test1.sh-rwxr-xr-x 1 oracle oinstall   99 Feb 23 11:51 test1.sh-rwxr-xr-x 1 oracle oinstall   99 Feb 23 11:52 test2.sh-rwxr-xr-x 1 oracle oinstall   99 Feb 23 11:52 test2.sh-rw-r--r-- 1 oracle oinstall  216 Feb 23 11:53 blank_file-rw-r--r-- 1 oracle oinstall  216 Feb 23 11:53 blank_file-rwxr--r-- 1 oracle oinstall  642 Feb 15 18:43 find.sh-rwxr--r-- 1 oracle oinstall  642 Feb 15 18:43 find.sh-rwxr--r-- 1 oracle oinstall 2250 Feb 23 21:20 awk.sh-rwxr--r-- 1 oracle oinstall 2250 Feb 23 21:20 awk.sh-rw-r--r-- 1 oracle oinstall 2653 Feb 23 21:30 awk.out-rw-r--r-- 1 oracle oinstall 2653 Feb 23 21:30 awk.outdrwxr-xr-x 2 oracle oinstall 4096 Feb 15 17:56 folderdrwxr-xr-x 2 oracle oinstall 4096 Feb 15 17:56 folder
[oracle@localhost sort.folder]$ uniq ls.sort total 80-rw-r--r-- 1 oracle oinstall    0 Feb 24 14:21 ls.out-rw-r--r-- 1 oracle oinstall    0 Feb 24 14:21 sed.sh-rwxr-xr-x 1 oracle oinstall   26 Nov 10 22:30 main.sh-rwxrwxrwx 1 oracle oinstall   44 Jan  7 22:39 shelltest.sh-rwxr-xr-x 1 oracle oinstall   99 Feb 23 11:51 test1.sh-rwxr-xr-x 1 oracle oinstall   99 Feb 23 11:52 test2.sh-rw-r--r-- 1 oracle oinstall  216 Feb 23 11:53 blank_file-rwxr--r-- 1 oracle oinstall  642 Feb 15 18:43 find.sh-rwxr--r-- 1 oracle oinstall 2250 Feb 23 21:20 awk.sh-rw-r--r-- 1 oracle oinstall 2653 Feb 23 21:30 awk.outdrwxr-xr-x 2 oracle oinstall 4096 Feb 15 17:56 folder
显示重复的次数:[oracle@localhost sort.folder]$ uniq -dc ls.sort       2 total 80      2 -rw-r--r-- 1 oracle oinstall    0 Feb 24 14:21 ls.out      2 -rw-r--r-- 1 oracle oinstall    0 Feb 24 14:21 sed.sh      2 -rwxr-xr-x 1 oracle oinstall   26 Nov 10 22:30 main.sh      2 -rwxrwxrwx 1 oracle oinstall   44 Jan  7 22:39 shelltest.sh      2 -rwxr-xr-x 1 oracle oinstall   99 Feb 23 11:51 test1.sh      2 -rwxr-xr-x 1 oracle oinstall   99 Feb 23 11:52 test2.sh      2 -rw-r--r-- 1 oracle oinstall  216 Feb 23 11:53 blank_file      2 -rwxr--r-- 1 oracle oinstall  642 Feb 15 18:43 find.sh      2 -rwxr--r-- 1 oracle oinstall 2250 Feb 23 21:20 awk.sh      2 -rw-r--r-- 1 oracle oinstall 2653 Feb 23 21:30 awk.out      2 drwxr-xr-x 2 oracle oinstall 4096 Feb 15 17:56 folder
下面ls.sort2文件中有如下内容:[oracle@localhost sort.folder]$ cat ls.sort2      0 oracle oinstall0 oracle oinstall0 oracle oinstall0 oracle oinstall26 oracle oinstall26 oracle oinstall44 oracle oinstall44 oracle oinstall99 oracle oinstall99 oracle oinstall99 oracle oinstall99 oracle oinstall216 oracle oinstall216 oracle oinstall642 oracle oinstall642 oracle oinstall2250 oracle oinstall2250 oracle oinstall2653 oracle oinstall2653 oracle oinstall4096 oracle oinstall4096 oracle oinstall
去重复显示:[oracle@localhost sort.folder]$ uniq -c ls.sort2        4 0 oracle oinstall      2 26 oracle oinstall      2 44 oracle oinstall      4 99 oracle oinstall      2 216 oracle oinstall      2 642 oracle oinstall      2 2250 oracle oinstall      2 2653 oracle oinstall      2 4096 oracle oinstall
使用-f前2个域忽略,则系统判断均为重复数据:[oracle@localhost sort.folder]$ uniq -cf2 ls.sort2         22 0 oracle oinstall
join的用法:有两个文件,内容如下:[oracle@localhost sort.folder]$ cat names.txt M.Golls 12 Hidd RdP.Heller The AcreP.Willey 132 The GroveT.Norms 84 Connaught RdK.Fletch 12 Woodlea[oracle@localhost sort.folder]$ cat town.txt M.Golls Norwith NRDP.Willey Galashiels GDDT.Norms Brandon BSLK.Fletch Mildenhall MAF
我们来连接两个文件(其实类似于sql中的join):[oracle@localhost sort.folder]$ join names.txt town.txt M.Golls 12 Hidd Rd Norwith NRDP.Willey 132 The Grove Galashiels GDDT.Norms 84 Connaught Rd Brandon BSLK.Fletch 12 Woodlea Mildenhall MAF
显示第一个文件中未与第二个文件内容匹配的行:[oracle@localhost sort.folder]$ join -a1 names.txt town.txt M.Golls 12 Hidd Rd Norwith NRDP.Heller The AcreP.Willey 132 The Grove Galashiels GDDT.Norms 84 Connaught Rd Brandon BSLK.Fletch 12 Woodlea Mildenhall MAF
显示第一个文件的第一个域和第二个文件的第二个域:[oracle@localhost sort.folder]$ join -o 1.1,2.2 names.txt town.txt M.Golls NorwithP.Willey GalashielsT.Norms BrandonK.Fletch Mildenhall
将文件1的域1和文件2的域1作为连接键:[oracle@localhost sort.folder]$ join -j1 1 -j2 1 names.txt town.txt M.Golls 12 Hidd Rd Norwith NRDP.Willey 132 The Grove Galashiels GDDT.Norms 84 Connaught Rd Brandon BSLK.Fletch 12 Woodlea Mildenhall MAF
cut用来剪切从标准输入或者文本中的列或者域。剪切的文本可以粘贴到文本文件中:剪切以点号分割的第三个域:[oracle@localhost sort.folder]$ cut -d. -f3 iplist 8080808080
paste粘贴:[oracle@localhost sort.folder]$ ls | paste -d"" -iplistls.outls.sortls.sort2names.txtpaste1paste2sort.shtown.txt
将两个文件分为两列粘贴,以冒号隔开:[oracle@localhost sort.folder]$ paste -d: names.txt town.txt M.Golls 12 Hidd Rd:M.Golls Norwith NRDP.Heller The Acre:P.Willey Galashiels GDDP.Willey 132 The Grove:T.Norms Brandon BSLT.Norms 84 Connaught Rd:K.Fletch Mildenhall MAFK.Fletch 12 Woodlea:
split分割文件:文件较大时可以使用此方法:[oracle@localhost sort.folder]$ lltotal 64-rw-r--r-- 1 oracle oinstall  143 Mar  3 10:58 iplist-rw-r--r-- 1 oracle oinstall  620 Mar  3 10:51 ls.out-rw-r--r-- 1 oracle oinstall 1240 Mar  3 11:14 ls.sort-rw-r--r-- 1 oracle oinstall  436 Mar  3 11:25 ls.sort2-rw-r--r-- 1 oracle oinstall  104 Mar  3 11:33 names.txt-rw-r--r-- 1 oracle oinstall   12 Mar  3 12:07 paste1-rw-r--r-- 1 oracle oinstall    0 Mar  3 12:04 paste2-rwxr--r-- 1 oracle oinstall    0 Mar  3 09:51 sort.sh-rw-r--r-- 1 oracle oinstall   88 Mar  3 11:35 town.txt
将文件分割为两行一个文件:[oracle@localhost sort.folder]$ split -2 ls.out [oracle@localhost sort.folder]$ lltotal 112-rw-r--r-- 1 oracle oinstall  143 Mar  3 10:58 iplist-rw-r--r-- 1 oracle oinstall  620 Mar  3 10:51 ls.out-rw-r--r-- 1 oracle oinstall 1240 Mar  3 11:14 ls.sort-rw-r--r-- 1 oracle oinstall  436 Mar  3 11:25 ls.sort2-rw-r--r-- 1 oracle oinstall  104 Mar  3 11:33 names.txt-rw-r--r-- 1 oracle oinstall   12 Mar  3 12:07 paste1-rw-r--r-- 1 oracle oinstall    0 Mar  3 12:04 paste2-rwxr--r-- 1 oracle oinstall    0 Mar  3 09:51 sort.sh-rw-r--r-- 1 oracle oinstall   88 Mar  3 11:35 town.txt-rw-r--r-- 1 oracle oinstall  108 Mar  3 12:14 xaa-rw-r--r-- 1 oracle oinstall  113 Mar  3 12:14 xab-rw-r--r-- 1 oracle oinstall  109 Mar  3 12:14 xac-rw-r--r-- 1 oracle oinstall  111 Mar  3 12:14 xad-rw-r--r-- 1 oracle oinstall  116 Mar  3 12:14 xae-rw-r--r-- 1 oracle oinstall   63 Mar  3 12:14 xaf

热点排行