Chinaunix首页 | 论坛 | 博客
  • 博客访问: 626098
  • 博文数量: 127
  • 博客积分: 6136
  • 博客等级: 准将
  • 技术积分: 1461
  • 用 户 组: 普通用户
  • 注册时间: 2009-10-24 00:32

分类: LINUX

2011-03-30 11:02:30

一个非常有用的命令,主要用来提取各种各样的数据。

cut -cchars file
如:
    -c5     提取第5个字符
        -c5-    提取第5个字符以后的字符
        -c1,5,12  提取多个字符,中间用“,”符号隔开
        -c5-14  提取第5个字符到第14个字符间的字符

[service@dsg tmp]$ cat f.txt
service  pts/0        Oct  9 20:27 (211.95.114.235)
service  pts/1        Oct  9 21:06 (218.80.203.242)
service  pts/2        Oct  9 14:35 (218.80.203.242)
service  pts/3        Oct  9 21:07 (218.80.213.242)
service  pts/4        Oct  9 21:07 (218.80.213.242)
service  pts/5        Oct  9 21:45 (58.31.205.19)
[service@dsg tmp]$ cut -c5 f.txt
i
i
i
i
i
i
[service@dsg tmp]$ cut -c5- f.txt    
ice  pts/0        Oct  9 20:27 (211.95.114.235)
ice  pts/1        Oct  9 21:06 (218.80.203.242)
ice  pts/2        Oct  9 14:35 (218.80.203.242)
ice  pts/3        Oct  9 21:07 (218.80.213.242)
ice  pts/4        Oct  9 21:07 (218.80.213.242)
ice  pts/5        Oct  9 21:45 (58.31.205.19)
[service@dsg tmp]$ cut -c1,5,14 f.txt
si0
si1
si2
si3
si4
si5

------------------------------
cut -d -f
 -d, --delimiter=DELIM
              use DELIM instead of TAB for field delimiter

 -f, --fields=LIST
              output only these fields;  also print any line that contains  no
              delimiter character, unless the -s option is specified

-d -f 主要用来从某中分隔符中提取数据
如:
[service@dsg tmp]$ cat f.txt
service1:pts/0:Oct  9 20:27: (211.95.114.235)
service2:pts/1:Oct  9 21:06: (218.80.203.242)
service3:pts/2:Oct  9 14:35: (218.80.203.242)
service4:pts/3:Oct  9 21:07: (218.80.213.242)
service5:pts/4:Oct  9 21:07: (218.80.213.242)
service6:pts/5:Oct  9 21:45: (58.31.205.19)
[service@dsg tmp]$ cut -d: -f1 f.txt
service1
service2
service3
service4
service5
service6
[service@dsg tmp]$ cut -d: -f2 f.txt
pts/0
pts/1
pts/2
pts/3
pts/4
pts/5
[service@dsg tmp]$ cut -d: -f3 f.txt
Oct  9 20
Oct  9 21
Oct  9 14
Oct  9 21
Oct  9 21
Oct  9 21
[service@dsg tmp]$ cut -d: -f5 f.txt
 (211.95.114.235)
 (218.80.203.242)
 (218.80.203.242)
 (218.80.213.242)
 (218.80.213.242)
 (58.31.205.19)
[service@dsg tmp]$ cut -d: -f9 f.txt

[service@dsg tmp]$ cut -d: -f1,4 f.txt  #提取1和4列数据
service1:27
service2:06
service3:35
service4:07
service5:07
service6:45

Given that the fields are separated by tabs, you should use the -f option to cut instead:

如果文件使用tab键隔开就直接使用-f就可以了,-d的默认分隔符号就为tab键。
阅读(1665) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~