linux命令之uniq sort cut

uniq

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

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

– d 只显示重复行。

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

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

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

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

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

整个文件
liup@liup-Mint ~ $ cat test
boy took bat home
boy took bat home
girl took bat home
boy took bat home
boy took bat home
dog brought hat home
dog brought hat home
dog brought hat home
uniq命令,去掉重复的行
liup@liup-Mint ~ $ uniq test
boy took bat home
girl took bat home
boy took bat home
dog 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 test
boy took bat home
boy took bat home
dog brought hat home
显示没有重复的行
liup@liup-Mint ~ $ uniq -u test
girl took bat home
忽略每行的前两个单词+两个字符后,统计每行重复的个数
liup@liup-Mint ~ $ uniq -f 2 -s 2 test
boy took bat home
忽略每行的第一个单词,统计每行重复的个数
liup@liup-Mint ~ $ uniq -f 1 test
boy took bat home
dog brought hat home
打印出重复的行
liup@liup-Mint ~ $ uniq -D test
boy took bat home
boy took bat home
boy took bat home
boy took bat home
dog brought hat home
dog brought hat home
dog 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值