1.sort的使用:
sort命令将许多不同的域按不同的列顺序分类。当查阅注册文件或为另一用户对下载文件重排文本列时,sort工具很方便。实际上,使用其他UNIX工具时,已假定工作文件已经被分过类。无论如何,分类文件比不分类文件看起来更有意义。
sort命令的一般格式为:
sort -cmu -o output_file [other options] +pos1 +pos2 input_files
下面简要介绍一下 sort的参数:
-c 测试文件是否已经分类。
-m 合并两个分类文件。
-u 删除所有复制行。
-o 存储sort结果的输出文件名。
-b 使用域进行分类时,忽略第一个空格。
-n 指定分类是域上的数字分类。
-t 域分隔符;用非空格或 tab键分隔域。
-r 对分类次序或比较求逆。
+n n为域号。使用此域号开始分类。
n n为域号。在分类比较时忽略此域,一般与 +n一起使用。
post1 传递到m,n。m为域号,n为开始分类字符数;
首先:建立一个文件luanxu.txt(内容如下)
Jack
Hello
This
is
a
test
Japan
American
Australia
举例:
进行排序 并打印到屏幕
sort luanxu.txt
查看文件是否已经分类:
sort -c luanxu.txt
将文件进行逆序排列:
sort -t: -r luanxu.txt
将重复的去掉
sort -u luanxu.txt
在第1域进行分类,可以使用 -k4
对类域进行分类,使用-k4选项
sort -t: -k4 show
show中内容
Boys in Company C:HK:192:2192
Alien:HK:119:1982
The Hill:KL:63:2972
Aliens:HK:301:4102
A few Good Men:KL:445:5851
Toy Story:HK:239:3972
按第四个域递减
sort -t: -r -k4 -k1 show
sort +0 -2 +3 show
先按0域分类 忽略2域 在按照3域分类
按域4反序排列并输出第一列
sort -t: -r -k4 show|head -1
按域4反序排列并输出倒数第一列
sort -t: -r -k4 show|tail -1
寻找类域进行输出awk
sort -t: -r -k4 show|head -1| awk -F: '{ print $1}'
2.uniq的使用
uniq用来从一个文本文件中去除或禁止重复行。一般uniq假定文件已分类,并且结果正确。
可以认为uniq有点像sort命令中唯一性选项。对,在某种程度上讲正是如此,但两者有一
个重要区别。sort的唯一性选项去除所有重复行,而uniq命令并不这样做。重复行是什么?在
uniq里意即持续不断重复出现的行,中间不夹杂任何其他文本。
命令格式:
uniq -u d c -f input-file out-file
-u 只显示不重复行。
-d 只显示有重复数据行,每种重复行只显示其中一行
-c 打印每一重复行出现次数。
-f n为数字,前n个域被忽略。
一些系统不识别-f选项,这时替代使用-n。
现在乱序的文件内容如下:
Jack
Jack
Jack
Hello
This
is
a
test
Japan
American
Australia
is
are
who
jack
Jack
Hello
Smith
John
uniq -c luanxu.txt
uniq -d luanxu.txt
参考书籍:shell脚本学习
sort命令将许多不同的域按不同的列顺序分类。当查阅注册文件或为另一用户对下载文件重排文本列时,sort工具很方便。实际上,使用其他UNIX工具时,已假定工作文件已经被分过类。无论如何,分类文件比不分类文件看起来更有意义。
sort命令的一般格式为:
sort -cmu -o output_file [other options] +pos1 +pos2 input_files
下面简要介绍一下 sort的参数:
-c 测试文件是否已经分类。
-m 合并两个分类文件。
-u 删除所有复制行。
-o 存储sort结果的输出文件名。
-b 使用域进行分类时,忽略第一个空格。
-n 指定分类是域上的数字分类。
-t 域分隔符;用非空格或 tab键分隔域。
-r 对分类次序或比较求逆。
+n n为域号。使用此域号开始分类。
n n为域号。在分类比较时忽略此域,一般与 +n一起使用。
post1 传递到m,n。m为域号,n为开始分类字符数;
首先:建立一个文件luanxu.txt(内容如下)
Jack
Hello
This
is
a
test
Japan
American
Australia
举例:
进行排序 并打印到屏幕
sort luanxu.txt
查看文件是否已经分类:
sort -c luanxu.txt
将文件进行逆序排列:
sort -t: -r luanxu.txt
将重复的去掉
sort -u luanxu.txt
在第1域进行分类,可以使用 -k4
对类域进行分类,使用-k4选项
sort -t: -k4 show
show中内容
Boys in Company C:HK:192:2192
Alien:HK:119:1982
The Hill:KL:63:2972
Aliens:HK:301:4102
A few Good Men:KL:445:5851
Toy Story:HK:239:3972
按第四个域递减
sort -t: -r -k4 -k1 show
sort +0 -2 +3 show
先按0域分类 忽略2域 在按照3域分类
按域4反序排列并输出第一列
sort -t: -r -k4 show|head -1
按域4反序排列并输出倒数第一列
sort -t: -r -k4 show|tail -1
寻找类域进行输出awk
sort -t: -r -k4 show|head -1| awk -F: '{ print $1}'
2.uniq的使用
uniq用来从一个文本文件中去除或禁止重复行。一般uniq假定文件已分类,并且结果正确。
可以认为uniq有点像sort命令中唯一性选项。对,在某种程度上讲正是如此,但两者有一
个重要区别。sort的唯一性选项去除所有重复行,而uniq命令并不这样做。重复行是什么?在
uniq里意即持续不断重复出现的行,中间不夹杂任何其他文本。
命令格式:
uniq -u d c -f input-file out-file
-u 只显示不重复行。
-d 只显示有重复数据行,每种重复行只显示其中一行
-c 打印每一重复行出现次数。
-f n为数字,前n个域被忽略。
一些系统不识别-f选项,这时替代使用-n。
现在乱序的文件内容如下:
Jack
Jack
Jack
Hello
This
is
a
test
Japan
American
Australia
is
are
who
jack
Jack
Hello
Smith
John
uniq -c luanxu.txt
uniq -d luanxu.txt
参考书籍:shell脚本学习