cut命令
1. 样例内容
//样例内容[root@kylin236 ~ 19:16:05]# cat /etc/hosts10.80.34.58 h58 1 1110.80.34.57 h57 2 2210.80.34.59 h59 3 3310.80.34.55 h55 4 44
2. cut -f 2 /etc/hosts -f 提取第几列
[root@kylin236 ~ 19:11:11]# cat /etc/hosts10.80.34.58 h5810.80.34.57 h5710.80.34.59 h5910.80.34.55 h55[root@kylin236 ~ 19:11:17]# cut -f 2 /etc/hostsh58h57h59h55//这里cut不了是因为中间是空格[root@kylin236 ~ 19:10:12]# cut -f 2 /etc/hosts10.80.34.58 h5810.80.34.57 h5710.80.34.59 h5910.80.34.55 h55
3. grep -v 的取反可以将某一行去除不显示,也可以从几个数中取反
[root@kylin236 ~ 19:11:19]# cut -f 2 /etc/hosts|grep -v "h58"h57h59h55
4. 提取第二,第三列 用逗号
[root@kylin236 ~ 19:16:12]# cut -f 2,3 /etc/hostsh58 1h57 2h59 3h55 4
5. -c 字符范围
n- 表示从第n个字符到行尾, n-m表示第n到第m个字符,-m表示从第一到第m个字符
[root@kylin236 ~ 19:16:59]# cut -c -5 /etc/hosts10.8010.8010.8010.80[root@kylin236 ~ 19:21:32]# cut -c 5- /etc/hosts0.34.58 h58 1 110.34.57 h57 2 220.34.59 h59 3 330.34.55 h55 4 44[root@kylin236 ~ 19:21:50]# cut -c 5-8 /etc/hosts0.340.340.340.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 2AP#获取不到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 1sysadmsecadmaudadmemsadm
[root@kylin236 ~ 19:33:52]# grep "/bin/bash" /etc/passwd|grep -v "root"sysadm:x:1000:1000::/sysadm:/bin/bashsecadm:x:1001:1001::/secadm:/bin/bashaudadm:x:1002:1002::/audadm:/bin/bashemsadm:x:1005:1006::/home/emsadm:/bin/bash
如果先找列,必定会多出来一些内容,
[root@kylin236 ~ 19:34:05]# cut -d ":" -f 1,3 /etc/passwd |grep rootroot:0
