Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5609612
  • 博文数量: 922
  • 博客积分: 19333
  • 博客等级: 上将
  • 技术积分: 11226
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-27 14:33
文章分类

全部博文(922)

文章存档

2023年(1)

2020年(2)

2019年(1)

2017年(1)

2016年(3)

2015年(10)

2014年(17)

2013年(49)

2012年(291)

2011年(266)

2010年(95)

2009年(54)

2008年(132)

分类: LINUX

2009-11-23 20:30:11

cut -b list [-n] [file ...]

cut -c list [file ...]

cut -f list [-d delim][-s][file ...]


【功能】

cut命令用于从文件或者标准输入中读取内容并截取每一行的特定部分并送到标准输出。

 

【举例】

假设查看的文件内容如下:

$cat passwd_cut

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

bin:x:2:2:bin:/bin:/bin/sh

aaaaaaaaaaaaaa

sys:x:3:3:sys:/dev:/bin/sh

sync:x:4:65534:sync:/bin:/bin/sync


*截取文件passwd_cut每行从第2到第3个字符共2个字符:

$cut -c 2-3 passwd_cut

输入之后,输出如下:

oo

ae

in

aa

ys

yn

这里,如果截取第3个字符则用"cut -c 3 passwd_cut",-b和-c选项用法一样,不过是按字节截取。


*截取文件passwd_cut每行第2到3个字段,字段以“:”做分割符:

$cut -f 2-3 -d':' passwd_cut

输入之后,输出如下:

x:0

x:1

x:2

aaaaaaaaaaaaaa

x:3

x:4

这里,如果不用-d指定分隔符号,那么默认分隔符号是[Tab]键,如果行内没有分隔符号,那么原封不动把这一行打印出来,如果行内有多个连续的该分隔符号,需要好好想想,如果多个-d应该以最后一个为准,我实践过。


*截取文件passwd_cut每行第2到3个字段,字段分隔符“:”,不含分隔符的行不打印:

$cut -f2-3 -d':' -s passwd_cut

输入之后,输出如下:

x:0

x:1

x:2

x:3

x:4

这里,另外注意-f后面有无空格都一样。


*截取文件passwd_cut每行第2个字段(含第二个字段)之前的内容,分隔符为':':

$cut -f-2 -d':' -s passwd_cut

输入之后,输出如下:

root:x

daemon:x

bin:x

sys:x

sync:x

这里,需要注意的是-c,-b,-f选项表示第几个,这都是以1做为开始而不是0。


*截取文件passwd_cut每行第2个字段(含第二个字段)之后的内容,分隔符为':':

$cut -f2- -d':' -s passwd_cut

输入之后,输出如下:

x:0:0:root:/root:/bin/bash

x:1:1:daemon:/usr/sbin:/bin/sh

x:2:2:bin:/bin:/bin/sh

x:3:3:sys:/dev:/bin/sh

x:4:65534:sync:/bin:/bin/sync

这里,同样利用了-s选项,使得不含分隔符号的行不打印出来。


*截取passwd_cut每行第2个字段(含第二个字段)之后内容,分隔符':',截取后用!填充在每项之间:

$cut -f2- -d':' --output-delimiter='!' passwd_cut

输入之后,输出如下:

x!0!0!root!/root!/bin/bash

x!1!1!daemon!/usr/sbin!/bin/sh

x!2!2!bin!/bin!/bin/sh

aaaaaaaaaaaaaa

x!3!3!sys!/dev!/bin/sh

x!4!65534!sync!/bin!/bin/sync

这里,输出的时候把分隔符号替代为!。


*截取passwd_cut每行第2-5个字段(含第2、5个字段)之外内容,并输出,分隔符':':

$cut -f2-5 -d':' --complement passwd_cut

输入之后,输出如下:

root:/root:/bin/bash

daemon:/usr/sbin:/bin/sh

bin:/bin:/bin/sh

aaaaaaaaaaaaaa

sys:/dev:/bin/sh

sync:/bin:/bin/sync

这里,利用了--complement选项来截取获得指定之外的内容。


【描述】

*cut主要有5个参数,

-c,"character"截取方式

-b,"byte"截取方式

-f,"field"截取方式

-d,当采用field模式截取时,需要用此参数指定一个分隔符,分割符只能为单个字符。

-s,suppress,表示如果行中不含给出的分割符则不输出该行(默认如果没有则将该行原封不动输出)


*最开始命令格式中的list表示在行内的对三种方式(-c,-b,-f)取的范围表示如下:

N

只有第N项

N-

从第N项一直到行尾

N-M

从第N项到第M项(包括M)

-M

从一行的开始到第M项(包括M)

-

从一行的开始到结束的所有项


*如果命令执行成功则返回0,遇到错误则返回一个大于0的数字。



【其他】

可以参考man,实际基本上也都没有什么了。

阅读(4182) | 评论(1) | 转发(3) |
给主人留下些什么吧!~~

vaqeteart2020-01-03 14:15:52

to the orgmode