cut 命令多用与字符截取
1.语法格式
2.使用说明
3.主要参数
-b | 以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志 |
---|---|
-c | 以字符为单位进行分割 |
-d | 自定义分隔符,默认为制表符 |
-f | 与-d一起使用,指定显示哪个区域 |
-n | 取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除 |
4.指定字段的字符或者字节范围
cut命令可以将一串字符作为列来显示,字符字段的记法:
N-:从第N个字节、字符、字段到结尾;
N-M:从第N个字节、字符、字段到第M个(包括M在内)字节、字符、字段;
-M:从第1个字节、字符、字段到第M个(包括M在内)字节、字符、字段。
5.示例
[root@shell mnt]# cp /etc/passwd .
[root@shell mnt]# head -5 passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[root@shell mnt]# head -5 passwd | cut -d : -f 1
root
bin
daemon
adm
lp
[root@shell mnt]# head -5 passwd | cut -d : -f 1,3-6
root:0:0:root:/root
bin:1:1:bin:/bin
daemon:2:2:daemon:/sbin
adm:3:4:adm:/var/adm
lp:4:7:lp:/var/spool/lpd
[root@shell mnt]# head -5 passwd | cut -c 1-3
roo
bin
dae
adm
lp:
[root@shell mnt]# head -5 passwd | cut -c -2
ro
bi
da
ad
lp
[root@shell mnt]# head -5 passwd | cut -c 5-
:x:0:0:root:/root:/bin/bash
x:1:1:bin:/bin:/sbin/nologin
on:x:2:2:daemon:/sbin:/sbin/nologin
x:3:4:adm:/var/adm:/sbin/nologin
:4:7:lp:/var/spool/lpd:/sbin/nologin
文章 https://www.cnblogs.com/fulucky/p/8124858.html
多用于字符排序
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-d 排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
-f 排序时,将小写字母视为大写字母。
-i 排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
-m 将几个排序好的文件进行合并。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
+<起始栏位>-<结束栏位> 以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
--help 显示帮助。
--version 显示版本信息
[root@shell mnt]# vim sort.txt
[root@shell mnt]# cat sort.txt
aaa
bbb
fff
kearshy
hh
[root@shell mnt]# sort sort.txt
aaa
bbb
fff
hh
kearshy
2.sort的-u 选项它的作用很简单,就是在输出行中去除重复行。
[root@shell mnt]# vim sort.txt
[root@shell mnt]# cat sort.txt
aaa
bbb
fff
kearshy
hh
hh
kearshy
[root@shell mnt]# sort -u sort.txt
aaa
bbb
fff
hh
kearshy
3、 sort的-n选项(纯数字排序),因为sort排序程序将这些数字按字符进行排序,排序程序会先比较1和2,显然1小,所以就会出现10比2小的情况。这也是sort的一贯作风。
[root@shell mnt]# cat number
81
56
45
8
7
5
4
[root@shell mnt]# sort number
4
45
5
56
7
8
81
[root@shell mnt]# sort -n number
4
5
7
8
45
56
81
4、sort的-o选项,想把排序结果输出到原文件中,用重定向可就不行了。
[root@shell mnt]# vim number
[root@shell mnt]# cat number
81
56
4
5
8
7
45
[root@shell mnt]# sort -nr number -o number
[root@shell mnt]# cat number
81
56
45
8
7
5
4
5、sort的-t选项和-k选项
[root@shell mnt]# cat date
1997-11-13
1998-02-18
2004-04-02
1998-04-29
这个文件有三列,列与列之间用“-”隔开了,第一列表示年,第二列表示月,第三列表示日。那么我想以月来排序,也就是以第二列来排序,如何利用sort实现?幸好,sort提供了-t选项,后面可以设定间隔符。指定了间隔符之后,就可以用-k来指定列数了。
[root@shell mnt]# sort -n -k 2 -t '-' date
1998-02-18
1998-04-29
2004-04-02
1997-11-13
[root@shell mnt]# sort -n -k 1 -t '-' date
1997-11-13
1998-02-18
1998-04-29
2004-04-02