Who am I

我的照片
Hefei, Anhui, China
Research Fields: Satellite Geodesy

2012年2月11日星期六

Shell cut命令

cut命令
简介:正如其名,cut命令的功能就是“剪”,具体说来就是截取每行中的特定内容,并输出。操作对象是每一行
用法:cut [options]num1-num2 files
选项:-b  以字节为单位,截取num1至num2字节间的字符(一个汉字算三个字节)
      -c  以字符为单位,截取num1至num2字符间的字符(一个汉字算一个字符)
      -f  按域为单位,截取num1至num2域之间的内容,按域去字符时,通常要指定域分割符,用-d选项指定域分隔符,如-d:,用:作为域分割符(默认为tab符)
      -s  如果行中没有分割符,则不打印该行
举例:
1. -b选项
[root@localhost ~]# date
2011年08月11日 星期四20:44:52 EDT
[root@localhost ~]# date |cut -b 1-4                取前四个字节
2011
多个定位之间用逗号隔开:
[root@localhost ~]# date |cut -b 1-7,10
2011年8
[root@localhost ~]# date |cut -b 10,1-7       -b后面所有的定位进行从小到大排序,然后再提取
2011年8
负号的使用:
[root@localhost ~]# date |cut -b -4        第一个字符第四个字符
2011
[root@localhost ~]# date |cut -b 4-        第四个字符最后一个字符
1年08月11日 星期四21:05:30 EDT
[root@localhost ~]# date |cut -b -4,4-
2011年08月11日 星期四21:06:53 EDT
这两种情况下,都包括了第4个字节“1”,会输出整行,不会出现连续两个重叠的1
2. -c选项
[root@localhost ~]# date |cut -c 1-5
2011年
[root@localhost ~]# date |cut -c 5,9,13
年月日
3. -f选项
以/etc/passwd文件为例:
[root@localhost ~]# head -n5 /etc/passwd |cut -d : -f 1,3-5
root:0:0:root
bin:1:1:bin
daemon:2:2:daemon
adm:3:4:adm
lp:4:7:lp
-d指定域分隔符,-f 指定要剪出哪几个域。-d选项的默认间隔符就是制表符。
cut -d: -f1,5  /etc/passwd 用冒号作为分隔符打印文本列,显示第一和第五列
cut -d: -f1-5 /etc/passwd 用冒号作为分隔符打印文本列,显示第一到第五列
cut -d: -f5-  /etc/passwd 用冒号作为分隔符打印文本列,显示第五列及其之后的列


没有评论:

发表评论