linux命令之uniq sort cut

来源:互联网 发布:mysql select into 表 编辑:程序博客网 时间:2024/04/29 17:20

uniq

该命令各选项含义如下:、

– c 显示输出中,在每行行首加上本行在文件中出现的次数。它可取代- u和- d选项。

– d 只显示重复行。

– u 只显示文件中不重复的各行。

– n 前n个字段与每个字段前的空白一起被忽略。一个字段是一个非空格、非制表符的字符串,彼此由制表符和空格隔开(字段从0开始编号)。

+n 前n个字符被忽略,之前的字符被跳过(字符从0开始编号)。

– f n 与- n相同,这里n是字段数。

– s n 与+n相同,这里n是字符数。

整个文件liup@liup-Mint ~ $ cat testboy took bat homeboy took bat homegirl took bat homeboy took bat homeboy took bat homedog brought hat homedog brought hat homedog brought hat homeuniq命令,去掉重复的行liup@liup-Mint ~ $ uniq testboy took bat homegirl took bat homeboy took bat homedog brought hat home统计每行的重复的数量liup@liup-Mint ~ $ uniq -c test      2 boy took bat home      1 girl took bat home      2 boy took bat home      3 dog brought hat home排序后,统计每行的重复数量liup@liup-Mint ~ $ cat test | sort | uniq -c      4 boy took bat home      3 dog brought hat home      1 girl took bat home显示重复的行liup@liup-Mint ~ $ uniq -d testboy took bat homeboy took bat homedog brought hat home显示没有重复的行liup@liup-Mint ~ $ uniq -u testgirl took bat home忽略每行的前两个单词+两个字符后,统计每行重复的个数liup@liup-Mint ~ $ uniq -f 2 -s 2 testboy took bat home忽略每行的第一个单词,统计每行重复的个数liup@liup-Mint ~ $ uniq -f 1 testboy took bat homedog brought hat home打印出重复的行liup@liup-Mint ~ $ uniq -D testboy took bat homeboy took bat homeboy took bat homeboy took bat homedog brought hat homedog brought hat homedog brought hat home


sort

sort比较原则:依次按照ASCII码进行比较,最后将其升序输出。

下面介绍常用选项,其他请man一下

-u  去重

-r 输出降序

-n 不使用ASCII码,使用数字排序

-o 重定向写入文件时  sort filename >  newfilename 这样是ok的 ,但是sort filename > filename 则为空,需要改写成 sort filename -o filename

-t -k -t类似于sed 的-d 分割符的意思 -k则相当于-f 域

-f会将小写字母都转换为大写字母来进行比较,亦即忽略大小写

-c会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1

-C会检查文件是否已排好序,如果乱序,不输出内容,仅返回1

-M会以月份来排序,比如JAN小于FEB等等

-b会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。

cut

以每一行作为一个对象处理

定位方法有三个

-b 字节 -c 字符 -f 域

例如

-b

who | cut -b -3  打印出来1-3个byte

3- 打印第三个以后

3-5,8 打印第三个到第五个,和第八个byte

-c

字符和字节可以通过中文等特殊字符看出差别

-f 通过域来cut

cat /etc/passwd|head -n 5|cut -d : -f 1

-d 设置间隔符

默认是 tab;可以使用 -d ' '设置单个空格为间隔符,或者如上面的例子所示,使用冒号作为间隔符

而awk 则是使用一个或者多个空格作为分隔符  如 test1  test2     test3 使用awk可以成功分割test1,2,3;但是cut只能使用 -d ' ' 分割,但是会分割出来很多的空格

 





0 0
原创粉丝点击