linux常备工具之cut

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/daguanjia11/article/details/82987034

cut命令从文件或命令输入中按照指定的规则提取想要的东西。它主要有两种用法,分别是

  • 配合-c参数使用,来截取固定字符位置的内容
  • 配合-d-f参数使用,用分隔符来split成多个部分,再选取某个或某几个部分

cut -cchars file

chars制定了你想从file中的每行内提出哪些字符(根据位置)。例如,-c5是取第5个字符。-c5,8是取第5个和第8个字符,-c5-8是取第5个到第8个字符,-c5-是取第5个字符及其后面的所有字符。

下面是who命令的输出结果

$ who
kite     console  Oct  4 16:40 
kite     ttys000  Oct  4 16:40 
kite     ttys001  Oct  9 16:41 

我们使用管道(pipe)来使用cut。假设我们想拿到上次登录的时间,可以看出来登录的时间是从26到31个字符,所以使用下面的命令

$ who | cut -c26-31
16:40 
16:40 
16:41 

上面是格式化好的内容,列号对齐的比较工整,但如果遇到列号不统一但使用了分隔符来分隔不同内容的文本,可以使用-d -f参数来处理。

cut -dsplitter -findex

splitter是分隔符,该参数会将每一行的内容使用指定的分隔符生成一个数组,index是取的数组的索引,从1开始。index也可以像-c那样指定多个或指定一个范围

假设a.txt的内容如下

nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false
root:*:0:0:System Administrator:/var/root:/bin/sh
daemon:*:1:1:System Services:/var/root:/usr/bin/false

这个文件的每一行都包括了好几类的内容,他们之间使用冒号:分隔,我希望提取出用户名,用户名在第1部分

$ cut -d: -f1 a.txt 
nobody
root
daemon

我还可以同时拿到用户名和角色,分别第1部分和第5部分

$ cut -d: -f1,5 a.txt 
nobody:Unprivileged User
root:System Administrator

-d参数如果省略的话,默认使用制表符\t

猜你喜欢

转载自blog.csdn.net/daguanjia11/article/details/82987034
今日推荐