四.Linux之sort,uniq,join,cut,paste命令

常见命令选项

  • sort命令选项:

-c #测试文件是否被排序
-k #指定排序的域
-m #合并两个已排序的文件
-n #根据数字大小进行排序
-o [输出文件] #输出/重定向到指定文件
-r #将排序结果逆向显示
-t #改变域分隔符
-u #去除结果中的重复行

  • uniq命令选项

-c #打印每行在文件中重复出现的次数
-d #显示有重复的记录,每个记录显示一次
-u #只显示没有重复的记录

  • join命令选项
    join命令只能对已排序的文件进行操作

-a1或-a2 #分别附加显示文件一和文件二中没有共同域的记录
-i #比较域内容时,忽略大小写差异
-o #设置结果显示的格式
-t #改变域分割符
-v1或-v2 #与-a选项类似,但不显示有共同域的记录
-1或-2 #-1用于设置文件一连接的域,-2用于设置文件二连接的域

  • cut命令选项
    cut命令用于从标准文本文件中按域或行提取文件

-c #提取制定的字符数或字符范围,后面跟的是数字
-f #指定提取的域数或范围
-d #改变域分隔符

  • paste命令选项
    paste命令用于讲文本文件或标准输出中的内容粘贴到新的文件

-d #设置域分隔符(默认为空格或tab)
-s #将每个文件分割成一行

  • 从标准输入中读取数据

sort命令demo

  • -t选项
$ sort -t: 1.txt #-t与:中间可以有空格也可以没有
1:a
2:b
2:e
3:p
5:e
6:o
  • -k选项
$ sort -t: -k2 1.txt #-k与数字之间可以有空格也可以没有
1:a
2:b
2:e
5:e
6:o
0:p
3:p
  • -n选项
$ sort -t: 1.txt
04:p
11:a
2:b
2:e
3:p
5:e
6:o
$ sort -nt: 1.txt
# 或者使用sort -t:1 1.txt
# 不可以使用sort -t:n 1.txt这种
2:b
2:e
3:p
04:p
5:e
6:o
11:a
  • u选项
$ cat 1.txt 
11:a
2:b
2:e
5:e
5:e
6:o
5:e
3:p
04:p
$ sort -ut: 1.txt 
# 与uniq -u的区别在于uniq只对连续的重复项进行去重
04:p
11:a
2:b
2:e
3:p
5:e
6:o
  • -o选项
$ sort -t: -k2 -o new1.txt 1.txt
$ cat new1.txt 
11:a
2:b
2:e
5:e
5:e
5:e
6:o
04:p
3:p

$ sort -t: -c 3 
# 无输出说明已经排好序
$ sort -t: -c 1.txt 
sort:1.txt:7:无序: 5:e
# 有输出说明未排好序
  • -m选项
$ cat 2.txt 
1:c
2:d
2:d
$ cat 1.txt 
11:a
2:b
2:e
5:e
5:e
6:o
5:e
3:p
04:p
# sort -m可以对未排序的文件进行合并,但是没有任何意义
$ sort -t: -o sort1.txt 1.txt 
$ sort -t: -o sort2.txt 2.txt
$ sort -t: -m sort1.txt sort2.txt 
04:p
11:a
1:c
2:b
2:d
2:d
2:e
3:p
5:e
5:e
5:e
6:o
  • uniq命令demo
  • -c选项
$ uniq -c 1.txt 
      1 11:a
      1 2:b
      1 2:e
      2 5:e
      1 6:o
      1 5:e
      1 3:p
      1 04:p
  • -d选项
$ uniq -d 1.txt 
5:e
  • -u选项
$ uniq -u 1.txt 
11:a
2:b
2:e
6:o
5:e
3:p
04:p
  • -a和-v选项
$ join -t: -a2 -a1 sort1.txt sort2.txt 
04:p
1:c
11:a
2:b:d
2:b:d
2:e:d
2:e:d
3:p
5:e
5:e
5:e
6:o
$ join -t: -v1 sort1.txt sort2.txt 
04:p
11:a
3:p
5:e
5:e
5:e
6:o
  • -o选项
    注意此时的-o用于设置输出格式,并不是重定向
$ join -t: -v1 -o1.2 1.1 2.2 2.1 sort1.txt sort2.txt 
p:04::
a:11::
p:3::
e:5::
e:5::
e:5::
o:6::
  • -1和-2选项
$ sort -t: -k2 -o sort1.txt 1.txt 
$ cat sort1.txt 
11:a
2:b
2:e
5:e
5:e
5:e
6:o
04:p
3:p
$ sort -t: -k2 -o sort2.txt 2.txt 
$ cat sort2.txt 
1:c
2:d
2:d

cut命令demo

  • -c选项
$ cut -c1 sort1.txt 
1
2
2
5
5
5
6
0
3
$ cut -c1,3 sort1.txt 
1:
2b
2e
5e
5e
5e
6o
0:
3p
  • -f与-d选项
$ cut -d: -f2 sort1.txt 
a
b
e
e
e
e
o
p
p

paste命令demo

  • -d选项
$ paste -d: sort1.txt sort2.txt 
11:a:1:c
2:b:2:d
2:e:2:d
5:e:
5:e:
5:e:
6:o:
04:p:
3:p:
$ paste -d\| sort1.txt sort2.txt 
11:a|1:c
2:b|2:d
2:e|2:d
5:e|
5:e|
5:e|
6:o|
04:p|
3:p|
  • -s选项
$ paste -d\| -s sort1.txt sort2.txt 
11:a|2:b|2:e|5:e|5:e|5:e|6:o|04:p|3:p
1:c|2:d|2:d
  • -选项
$ paste -d"  " - - -
1.txt   
1.txt 2.txt
2.txt 3.txt
3.txt
$ ls | paste -d" " - - - - -
1.txt 2.txt 3 4aa 4ab
4ac 4ad 4ae 4af 4ag
4ah 4ai 4aj 4ak 4al
go new1.txt sort1.txt sort2.txt 公共
模板 视频 图片 文档 五.文件的排序、合并和分割.md
下载 音乐 桌面  

猜你喜欢

转载自blog.csdn.net/weixin_33785108/article/details/87234799
今日推荐