cut命令
1. 样例内容
//样例内容
[root@kylin236 ~ 19:16:05]# cat /etc/hosts
10.80.34.58 h58 1 11
10.80.34.57 h57 2 22
10.80.34.59 h59 3 33
10.80.34.55 h55 4 44
2. cut -f 2 /etc/hosts -f 提取第几列
[root@kylin236 ~ 19:11:11]# cat /etc/hosts
10.80.34.58 h58
10.80.34.57 h57
10.80.34.59 h59
10.80.34.55 h55
[root@kylin236 ~ 19:11:17]# cut -f 2 /etc/hosts
h58
h57
h59
h55
//这里cut不了是因为中间是空格
[root@kylin236 ~ 19:10:12]# cut -f 2 /etc/hosts
10.80.34.58 h58
10.80.34.57 h57
10.80.34.59 h59
10.80.34.55 h55
3. grep -v 的取反可以将某一行去除不显示,也可以从几个数中取反
[root@kylin236 ~ 19:11:19]# cut -f 2 /etc/hosts|grep -v "h58"
h57
h59
h55
4. 提取第二,第三列 用逗号
[root@kylin236 ~ 19:16:12]# cut -f 2,3 /etc/hosts
h58 1
h57 2
h59 3
h55 4
5. -c 字符范围
n- 表示从第n个字符到行尾, n-m表示第n到第m个字符,-m表示从第一到第m个字符
[root@kylin236 ~ 19:16:59]# cut -c -5 /etc/hosts
10.80
10.80
10.80
10.80
[root@kylin236 ~ 19:21:32]# cut -c 5- /etc/hosts
0.34.58 h58 1 11
0.34.57 h57 2 22
0.34.59 h59 3 33
0.34.55 h55 4 44
[root@kylin236 ~ 19:21:50]# cut -c 5-8 /etc/hosts
0.34
0.34
0.34
0.34
6. -d 指定某个分隔符的使用
cut -d “:” -f 1,3 /etc/passwd |grep root
找到非root用户
先找普通用户的行,再找列
如果不以哪个具体的分隔符来分割,就会不知道以谁为分割作为第一列。 默认是以制表符为分割的,cut命令无法识别空格,awk命令可以识别空格
对于一个有多个相同的字符可以用来作为分隔符的内容来说,指定的分隔符左侧是1,右侧是2位置,cut命令的序号无法从 0 开始
对于一个字符串来说,分隔符就是以当前分隔符为界限,分隔符左右分别是第一和第二列,无论这个字符串的长短
对于 ./XEAP 这个字符串来说
要注意在命令中的引号一般都是单引号。
[root@node1 EMS]# find . -size +20k|grep XEAP
./XEAP_Address
./XEAP
#第一列到第二列
[root@214 EMS]# find . -size +20k|grep XEAP|grep -v ./XEAP_Address|awk '{print $1}'|cut -d 'E' -f 1,2
./XEAP
#分隔符左边第一列
[root@214 EMS]# find . -size +20k|grep XEAP|grep -v ./XEAP_Address|awk '{print $1}'|cut -d 'E' -f 1
./X
#分隔符右边第一列
[root@214 EMS]# find . -size +20k|grep XEAP|grep -v ./XEAP_Address|awk '{print $1}'|cut -d 'E' -f 2
AP
#获取不到2345列,因为以 E为分隔符,只能取分隔符一侧的内容,不能跨分隔符提取内从
[root@214 EMS]# find . -size +20k|grep XEAP|grep -v ./XEAP_Address|awk '{print $1}'|cut -d 'E' -f 1,5
./X
#没有第三列,因为字符串已经一分为二
[root@214 EMS]# find . -size +20k|grep XEAP|grep -v ./XEAP_Address|awk '{print $1}'|cut -d 'E' -f 3
[root@kylin236 ~ 19:35:33]# grep "/bin/bash" /etc/passwd|grep -v "root"|cut -d ":" -f 1
sysadm
secadm
audadm
emsadm
[root@kylin236 ~ 19:33:52]# grep "/bin/bash" /etc/passwd|grep -v "root"
sysadm:x:1000:1000::/sysadm:/bin/bash
secadm:x:1001:1001::/secadm:/bin/bash
audadm:x:1002:1002::/audadm:/bin/bash
emsadm:x:1005:1006::/home/emsadm:/bin/bash
如果先找列,必定会多出来一些内容,
[root@kylin236 ~ 19:34:05]# cut -d ":" -f 1,3 /etc/passwd |grep root
root:0