cut 命令
2016-04-14 本文已影响69人
小鸡小季
(1)其语法格式为:cut [-bn] [file] 或 cut [-c] [file] 或 cut [-df] [file]
使用说明cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
主要参数
-b :【--byte】 以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :【--character】 以字符为单位进行分割。
-d :【--delimiter】自定义分隔符,默认为制表符。
-f :【--fields】与-d一起使用,指定显示哪个区域。
-n :【--complement】取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。
-s :【--only-delimited】不打印含分隔符的行
cat test |cut -b 3-4 每一行的第三到第四字节
cat test |cut -b 4 第四个字节
cat test |cut -b -3 前三个字节
cat test |cut -b 4- 从后数四个字节
cat test |cut -b 3-5,8 三到五个字节和第八个字节
$cat test
qw:er:tyuiop
as:df:ghjkl
zx:cv:bnm
$cat test |cut -d : -f 1
qw
as
zx
当然,在设定-f时,也可以使用例如3-5或者4-类似的格式,不过这样会连分隔符一起打印
在cut -d中用什么符号来设定制表符或空格呢?
其实cut的-d选项的默认间隔符就是制表符,所以当你就是要使用制表符的时候,完全就可以省略-d选项,而直接用-f来取域就可以了。
如果你设定一个空格为间隔符,那么就这样:
$ cat tab_space.txt |cut -d ' ' -f 1
注意,两个单引号之间可确实要有一个空格哦,不能偷懒。
而且,只能在-d后面设置一个空格,可不许设置多个空格,因为cut只允许间隔符是一个字符。
如果文件里面的某些域是由若干个空格来间隔的,那么用cut就有点麻烦了,因为cut只擅长处理“以一个字符间隔”的文本内容