学习linux cut 命令的用法

发布时间:2019-10-09编辑:脚本学堂
本文介绍下,linux中cut命令的用法,主要用于分隔字符串,通过一些例子,帮助大家的理解。

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