linux的cut命令用法总结

2019-09-23 08:52:39刘景俊

要用到,来mark一下:

ubuntu@VM-0-15-ubuntu:~/taoge$ cat b.txt 
abc
abcd
ubuntu@VM-0-15-ubuntu:~/taoge$ cat b.txt | cut -c 1
a
a
ubuntu@VM-0-15-ubuntu:~/taoge$ cat b.txt | cut -c 2
b
b
ubuntu@VM-0-15-ubuntu:~/taoge$ cat b.txt | cut -c 1-2
ab
ab
ubuntu@VM-0-15-ubuntu:~/taoge$ cat b.txt | cut -c 1-3
abc
abc
ubuntu@VM-0-15-ubuntu:~/taoge$ cat b.txt | cut -c 1-4
abc
abcd
ubuntu@VM-0-15-ubuntu:~/taoge$ cat b.txt | cut -c 1-5
abc
abcd
ubuntu@VM-0-15-ubuntu:~/taoge$ cat b.txt | cut -c 1-6
abc
abcd
ubuntu@VM-0-15-ubuntu:~/taoge$ 

常常配合awk使用。

cut命令可以按字节,字符,域来截取字串,在某些情况下使用cut,确实很方便,下面简单总结下:

1.按字符截取:(源字串:123:456:789)

1>截取第三个字符:

echo 123:456:789 | cut -c3
3

2>截取第三到第六之间的字符:

echo 123:456:789 | cut -c3-6
3:45

3>截取前三个字符

echo 123:456:789 | cut -c-3
123

4>提取第三个及其后面的所有字符

echo 123:456:789 | cut -c3-
3:456:789

5>提取第三到第六和第八到第十间的字符

echo 123:456:789 | cut -c3-6,8-10
3:45:78

小结下

>>这个“-”比较有意思,

在inx前,表示从字串投开始,

放在inx后,表示从idx开始到字串末尾,

在两个idx之间,表示从idx1到idx2。

>>还有这个“,”可以连接我们选择的不连续的域,

比如要取第1,3,5,7个字符: 

echo 123:456:789 | cut -c1,3,5,7
1346

>>对于-b选项应该和-c选项差不多吧,就是单位不同而已(我没有像上面一样测试,只是我的理解)

对于-d选项需要配合着-f选项使用,-d是用来指定分隔符,-f用来指定提取第几个域的内容

echo 123:456:789 | cut -d : -f 3
789

cut比较小巧,在适当的场景下使用效率很高,但是它不支持正则表达式,所以在复杂的情况下还是使用awk或者sed比较好!

[xxx@~]$ cut --help

Usage: cut OPTION... [FILE]...
Print selected parts of lines from each FILE to standard output.

Mandatory arguments to long options are mandatory for short options too.
 -b, --bytes=LIST    select only these bytes
 -c, --characters=LIST  select only these characters
 -d, --delimiter=DELIM  use DELIM instead of TAB for field delimiter
 -f, --fields=LIST    select only these fields; also print any line
              that contains no delimiter character, unless
              the -s option is specified
 -n           (ignored)
   --complement    complement the set of selected bytes, characters
              or fields
 -s, --only-delimited  do not print lines not containing delimiters
   --output-delimiter=STRING use STRING as the output delimiter
              the default is to use the input delimiter
   --help   display this help and exit
   --version output version information and exit