cut命令
来源:互联网 发布:淘宝老客户短信模板 编辑:程序博客网 时间:2024/05/18 11:26
cut是一个文本行选取命令,用于显示从N到M的字符。
一、其语法格式为:cut [-bn] [file]
cut [-c] [file]
cut [-df] [file]
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。如果不指定 file 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
主要参数
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-f :与-d一起使用,指定显示哪个区域。
-d :自定义分隔符,默认为制表符。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的范围之内,该字符将被写出;否则,该字符将被排除。
其中,b是bytes的首字母,c是characters,f是fields首字母,n是ignored中字母(此内容可用man命令查看而得)
cut详解:
linux每个命令都有它特殊的用途,只有知道为什么选择使用这个命令,我们才能更好的使用它。cut是用来“剪”文本中的行数据。所以cut首先要做的就是定位剪切的范围。
cut的-b、-c、-f参数说明“剪切”内容的最小单位(这就是为什么该三参数必选其一)。指定“剪切”的最小单位,接下来就是确定单位的长度。可使用整数进行范围限定。
以下是man cut的详细解释:
N N'th byte, character or field, counted from 1
N- from N'th byte, character or field, to end of line
N-M from N'th to M'th (included) byte, character or field
-M from first to M'th (included) byte, character or field
例:
[update@break ~]$ cat /etc/passwd | cut -c 1-4,5
root:
bin:x
daemo
mail:
从中可以看出,可以使用N-M来表示一个表示范围的闭区间[N,M],同时当多个区间并存时,可以使用逗号“,”将其隔开。
上面的读取方式有点像fread( )函数进行二进制读取,不分空格及其它。如果想象fscanf( )函数那样对一行数据进行分隔读取,即针对非固定格式,可以使用域,即-f参数。
例:
[update@break ~]$ cat /etc/passwd | cut -d: -f 1,2
root:x
bin:x
daemon:x
mail:x
对比一行完整的数据root:x:0:0:root:/root:/bin/bash,可知,-d参数利用字符“:”,把一行数据分解成一个字符串列表。联想Java中的String.split(":")方法,把该字符串分拆为
[root , x , 0 , 0 , root , /root , /bin/bash]。如果范围区间是[1,2],则把域1和域2的字符串用“:"拼接,并打印。此处需特别注意如果-d参数后跟的是单字符重复值,则只能分隔开单字符,与Java的String.split(" ")有很大的差别。例如:root:root::root:::root::::root,使用-d:后的list形如
[root , root , 空格, root , 空格,空格,root , 空格, 空格 , 空格 , root]
其中,-d是delimiter的首字母。默认是制表符。当是其它字符时,同上例书写格式。
对于-n参数,则是忽略按顺序读byte的规则,如果遇到多字节字符(汉字)时,-n可以告诉cut不要拆分多字节字符。
总结:cut是一个用来分割行文本的命令,在使用时,我们要指定分割的最小单位,使用参数b,c,f和分割的范围,使用N-M指定。当针对非固定格式时,可以使用域的概念。分割字符串时,
可以用-d参数指定用分割的标识字符。当处理汉字等多字节字符时,可以考虑使用-n参数。
- cut 命令
- cut命令
- cut命令
- cut命令
- cut命令
- cut命令
- cut命令
- cut命令
- Cut命令
- cut命令
- cut命令
- cut命令
- unix中的CUT命令
- linux cut 命令
- linux命令---cut
- linux cut 命令
- shell cut命令
- cut 命令的用法
- Dispatcher initialization failed怎么解决
- HashSet和HashMap的区别
- iOS裁剪图片
- 2012年11月6日 不存在
- 【学QT】 3 - DEBUG集子
- cut命令
- Hadoop调优参数总结
- insert 和 insert into
- Day-23页面视图控件
- HDU 1049/ZOJ 1494 Climbing Worm
- oculus 3d引擎开发SDK
- 写一篇产品体验报告需从哪些方面入手?
- git下载时提示证书错误的问题
- A - Wow! Such Sequence!——线段树+lazy