设为首页 收藏本站
查看: 894|回复: 0

[经验分享] Linux命令:cut

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2018-5-19 09:42:43 | 显示全部楼层 |阅读模式
  cut命令简介:
  cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的。
1.命令格式:
         cut  [-bn] [file]

         cut [-c] [file]

         cut [-df] [file]
         2.命令功能
       从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
       如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
  

     3.主要参数
     -b :以字节为单位进行分割。(bytes)
  这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
     -c :以字符为单位进行分割。(characters)
  -d :自定义分隔符,默认为制表符。
     -f  :与-d一起使用,指定显示哪个区域。(fields)
  -n :取消分割多字节字符。仅和 -b 标志一起使用。
  如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,
  该字符将被写出;否则,该字符将被排除。
4.命令实例:
  实例一:以“字节”定位,分别显示第3个和第14个字符
  [root@fox tmp]# who

  root     pts/0        2016-10-07 09:00 (10.*.*.*)
       root     pts/1        2016-10-07 09:37 (10.*.*.*)
  [root@fox tmp]# who | cut -b 3
       o
       o
  [root@fox tmp]# who | cut -b 14
       0
       1
  

   实例二:
   1、以“字节”定位,同时显示第3,4个和第14个字符
  [root@fox tmp]# who | cut -b 1-4,14
       root0
       root1
  

  2、进行从小到大排序定位,然后再提取。可不能颠倒定位的顺序
  [root@fox tmp]# who | cut -b 10,1-4,14
       rootp0
       rootp1
  3、 -3表示从第一个字节到第三个字节
  [root@fox tmp]# who | cut -b -3
       roo
       roo
  4、3-表示从第三个字节到行尾
  [root@fox tmp]# who | cut -b 3-
        ot     pts/0        2016-10-07 09:00 (10.*.*.*)
  ot     pts/1        2016-10-07 09:37 (10.*.*.*)
  [root@fox tmp]# who | cut -b -3,3-
        root     pts/0        2016-10-07 09:00 (10.*.*.*)
  root     pts/1        2016-10-07 09:37 (10.*.*.*)
  5、都是单字节字符,所以用-b和-c没有区别,
  如果你提取中文,-b只会傻傻的以字节(8位二进制位)来计算,输出就是乱码。
  [root@fox tmp]#cat cut_ch.txt
       星期一
       星期二
       星期三
      [root@fox tmp]# cut -b 3 cut_ch.txt        乱码
  

  
      [root@fox tmp]#cut -c 3 cut_ch.txt
       一
      二
      三

当遇到多字节字符时,可以使用-n选项,-n用于告诉cut不要将多字节字符拆开。例子如下:
  [root@fox tmp]# cat cut_ch.txt |cut -nb 1,2,3
      星
      星
      星

  

  6、域,是设置“间隔符”,再设置“提取第几个域”
  

  为什么会有“域”的提取呢,因为刚才提到的-b和-c只能在固定格式的文档中提取信息,而对于非固定格式的信息则束手无策。这时候“域”就派上用场了。
  如果你观察过/etc/passwd文件,你会发现,它并不像who的输出信息那样具有固定格式,而是比较零散的排放。但是,冒号在这个文件的每一行中都起到了非常重要的作用,冒号用来隔开每一项。
  

  以/etc/passwd的前3行内容为例:
  [root@fox tmp]# cat /etc/passwd|head -n 5
        root:x:0:0:root:/root:/bin/bash
        bin:x:1:1:bin:/bin:/sbin/nologin
        daemon:x:2:2:daemon:/sbin:/sbin/nologin
  

  用-d来设置间隔符为冒号,用-f来设置我要取的是第一个域,列出所有的用户名。
  [root@fox tmp]# cat /etc/passwd|head -n 5|cut -d : -f 1
        root
        bin
        daemon
  

  设定-f时,可使用例如3-5或者4-类似的格式:
  [root@fox tmp]# cat /etc/passwd|head -n 5|cut -d : -f 1,3-5,7
        root:0:0:root:/bin/bash
        bin:1:1:bin:/sbin/nologin
        daemon:2:2:daemon:/sbin/nologin
  7、制表符辨认,以下方法可以看出一段空格到底是由若干个空格组成的还是由一个制表符组成。
  [root@fox tmp]# cat tab_space.txt
        this is tab finish.
        this is several space      finish.
  

  [root@fox tmp]# sed -n l tab_space.txt   (sed -n后面的字符是L的小写)
  this is tab\tfinish.$
        this is several space      finish.$
  

  若是制表符(TAB),那么会显示为\t符号,如果是空格,就会原样显示。
        通过此方法即可以判断制表符和空格。
  

  8、制表符及空格为间隔符
  cut的-d选项的默认间隔符是制表符,完全就可以省略-d选项;
  cut -d ' ' 设定一个空格为间隔符;
  

  [root@fox tmp]# cat tab_space.txt |cut -d ' ' -f 1    (单引号间有1个空格,且只允许1个)
  this
this

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-461913-1-1.html 上篇帖子: Linux命令:cat 下篇帖子: linux命令之rsync
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表