cut 命令的功能
cut命令可以从一个文本文件或者文本流中提取文本列
cut 命令的格式
cut -b list [-n] [file ...]
cut -c list [file ...]
cut -f list [-d delim][-s][file ...]
上面的-b、-c、-f分别表示字节、字符、字段(即byte、character、field);
list表示-b、-c、-f操作范围,-n常常表示具体数字;
file表示的自然是要操作的文本文件的名称;
delim(英文全写:delimiter)表示分隔符,默认情况下为TAB;
-s表示不包括那些不含分隔符的行(这样有利于去掉注释和标题)
上面三种方式中,表示从指定的范围中提取字节(-b)、或字符(-c)、或字段(-f)
范围的表示方法:
N 只有第N项
N- 从第N项一直到行尾
N-M 从第N项到第M项(包括M)
-M 从一行的开始到第M项(包括M)
- 从一行的开始到结束的所有项
实例:
1,过滤字符串
复制代码 代码示例:
[root@jbxue ~]# grep '[[:digit:]]:' /proc/interrupts
0: 3465628 IO-APIC-edge timer
1: 307 IO-APIC-edge i8042
6: 5 IO-APIC-edge floppy
7: 0 IO-APIC-edge parport0
8: 1 IO-APIC-edge rtc
9: 0 IO-APIC-level acpi
12: 1520 IO-APIC-edge i8042
15: 50594 IO-APIC-edge ide1
51: 30674 IO-APIC-level ehci_hcd:usb1, ioc0
59: 0 IO-APIC-level uhci_hcd:usb2
67: 4708 IO-APIC-level
eth0
75: 0 IO-APIC-level Ensoniq AudioPCI
2,使用 cut 命令剪切出 1-15 列的内容
复制代码 代码示例:
0: 3480729
1: 307
6: 5
7: 0
8: 1
9: 0
12: 1520
15: 50828
51: 30676
59: 0
67: 4777
75: 0
3,使用 -f 提取文本中的字段
复制代码 代码示例:
[root@jbxue ~]# cut -d':' -f1 /etc/passwd | head -10
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
继续,创建一个文本文件,名为a.txt
复制代码 代码示例:
[root@jbxue ~]# cat a.txt
A1 A2 A3
B1 B2 B3
C1 C2 C3
D1 D2 D3
A1、B1、C1所代表的行字符之间均以TAB分隔,D1却是以空格来分开的。
复制代码 代码示例:
[root@jbxue ~]# cut -f1- -s a.txt
A1 A2 A3
B1 B2 B3
C1 C2 C3
看到-s的作用了吗?(因为第一行不含有任何TAB字符,所以直接被剔除了),而最后一行(即D1行),是以空格区分间距,所以也不合要求。
还可以为打印出来的文件加上 / 空格符
复制代码 代码示例:
[root@jbxue ~]# cut -f1- -s --output-delimiter='/' a.txt
A1/A2/A3
B1/B2/B3
C1/C2/C3
[root@jbxue ~]#
取出网卡的 IP 地址
复制代码 代码示例:
[root@jbxue ~]# /sbin/ifconfig | grep "inet addr:192.168" | cut -d ":" -f 2 | cut -d " " -f 1
192.168.1.112
cut -d " " -f 1 这里的 " " 中间一定要由空格,否则过滤出来的是这样的结果
192.168.1.112 Bcast