首页 > 系统相关 >Ubuntu下cut命令的使用

Ubuntu下cut命令的使用

时间:2022-11-01 16:01:12浏览次数:32  
标签:wytzxd Workstation cut Ubuntu 命令 5.25 Slearn ubuntu

1.简介

cut命令用于从文件或者标准输入中读取内容并截取每一行的特定部分并送到标准输出。它是以每一行为一个处理对象的,这种机制和sed是一样的。

2.cut命令主要是接受三个定位方法

第一,字节(bytes),用选项-b

第二,字符(characters),用选项-c

第三,域(fields),用选项-f

3.语法

cut -c/-b list [file...]

cut -f list [-d delim] [file]          或者         cut [-d delim] -f list

-b:按字节截取方式

wytzxd@ubuntu:~/Workstation/Slearn/5.25$ who
wytzxd   tty7         2011-05-25 09:01 (:0)
wytzxd   pts/0        2011-05-25 09:34 (:0)

wytzxd@ubuntu:~/Workstation/Slearn/5.25$ who | cut -b 3                   //在-b后面必须指定数字,表示要截取哪个字节
t
t

wytzxd@ubuntu:~/Workstation/Slearn/5.25$ who | cut -b 2,3-5,10        //想要截取多个的写法 ,
ytzxt
ytzxp
但有一点要注意,cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。不能颠倒定位的顺序。

eg:

wytzxd@ubuntu:~/Workstation/Slearn/5.25$ who | cut -b 3-5,10,2         //结果与上面相同
ytzxt
ytzxp

其他:

wytzxd@ubuntu:~/Workstation/Slearn/5.25$ who | cut -b 3-                 //第三个字符以及后面所有
tzxd   tty7         2011-05-25 09:01 (:0)
tzxd   pts/0        2011-05-25 09:34 (:0)
wytzxd@ubuntu:~/Workstation/Slearn/5.25$ who | cut -b -3                //第三个字符以及前面所有
wyt

wyt

wytzxd@ubuntu:~/Workstation/Slearn/5.25$ who | cut -b -3,3-            //第三个字符不会重复
wytzxd   tty7         2011-05-25 09:01 (:0)

wytzxd   pts/0        2011-05-25 09:34 (:0)

-c:按字符截取方式

wytzxd@ubuntu:~/Workstation/Slearn/5.25$ who | cut -c 3,5
tx
tx

不过,看着怎么和-b没有什么区别啊?莫非-b和-c作用一样? 其实不然,看似相同,只是因为这个例子举的不好,who输出的都是单字节字符,所以用-b和-c没有区别,如果你提取中文,区别就看出来了,来,看看中文提取的情况:

(-c也是乱码,没解决)

cut -c num1-num2 filename   说明:显示每行从开头算起 num1 到 num2 的文字

who | cut -c 1-10
wytzxd   t
wytzxd   p

-f list:按字段截取

list为字段编号或一段范围的列表(以逗号隔开)

-d delim:通过-f选项,使用delim作为定界符。默认的定界符为制表符(Tab)

wytzxd@ubuntu:~/Workstation/Slearn/5.25$ cat cut_f
wang,yan,ting
wang,yan,lun
zuo,hai,zhi
wytzxd@ubuntu:~/Workstation/Slearn/5.25$ cut -d , -f 3 cut_f                  //以逗号为分隔符
ting
lun
zhi
-b,-c 和 -f 参数可以跟以下子参数:

  N 第N个字符或字段

  N- 从第一个字符或字段到文件结束

  N-M 从第N个到第M个字符或字段

  -M 从第一个到第N个字符或字段

wytzxd@ubuntu:~/Workstation/Slearn/5.25$ cut -d , -f 1,3 cut_f > test1
wytzxd@ubuntu:~/Workstation/Slearn/5.25$ cat test1 
wang,ting
wang,lun
zuo,zhi

注意:

1.如果遇到空格和制表符时,怎么分辨呢?

有时候制表符确实很难辨认,有一个方法可以看出一段空格到底是由若干个空格组成的还是由一个制表符组成的。

wytzxd@ubuntu:~/Workstation/Slearn/5.25$ cat cut_t
wang  yan    ting
wytzxd@ubuntu:~/Workstation/Slearn/5.25$ sed -n l cut_t                         //sed -n后面的字符是L的小写字母
wang  yan\tting$

2.我应该在cut -d中用什么符号来设定制表符或空格

默认为tab键;所以当你就是要使用制表符的时候,完全就可以省略-d选项,而直接用-f来取域。

wytzxd@ubuntu:~/Workstation/Slearn/5.25$ cut -f 1 cut_t
wang  yan
wytzxd@ubuntu:~/Workstation/Slearn/5.25$ cut -f 2 cut_t
ting
如果你设定一个空格为间隔符,那么就这样:

wytzxd@ubuntu:~/Workstation/Slearn/5.25$ cut -f 1 -d ' ' cut_t             //两个单引号之间可确实要有一个空格
wang
wytzxd@ubuntu:~/Workstation/Slearn/5.25$ cut -f 2 -d ' ' cut_t

wytzxd@ubuntu:~/Workstation/Slearn/5.25$ cut -f 3 -d ' ' cut_t
yan    ting

为什么第二个例子会是空??

因为你只能在-d后面设置一个空格,不许设置多个空格,因为cut只允许间隔符是一个字符;

此例中,wang后有两个空格,所以以一个为定界符后,另一个以字符形式输出;

如果文件里面的某些域是由若干个空格来间隔的,那么用cut就有点麻烦了,因为cut只擅长处理“以一个字符间隔”的文本内容。

标签:wytzxd,Workstation,cut,Ubuntu,命令,5.25,Slearn,ubuntu
From: https://www.cnblogs.com/neil2151/p/16848006.html

相关文章

  • etcd(3):常用命令行
    etcdctl常用命令行用户可以使用etcd的命令行工具etcdctl与etcd服务端进行交互。默认情况下,etcdctl使用v2的API,如需要使用v3的API,可以导入如下环境变量:exportETCDCTL_AP......
  • yum localinstall 解决本地rpm包的依赖问题,以及yum 命令常用方法
    摘自:https://blog.csdn.net/heshouyou/article/details/66971116 今天在Fedora12上安装VBox的时候遇到一点麻烦,还好yum localinstall帮我轻松的解决这个问题.[Blinux......
  • IntelliJ IDEA and Eclipse Shortcuts
    https://www.cloudflight.io/en/blog/intellij-idea-and-eclipse-shortcuts/ AfteraroundsevenyearsofexclusivelyusingEclipseforJavadevelopmentIrecent......
  • Authentication Required on Ubuntu 20.04
    Background 当我使用remote桌面连接到Ubuntu系统的时候,总是频繁的跳出AuthenticationRequired窗口,十分影响操作: Onceyouareloggedinmainlythesystemaskfo......
  • Freeswitch sofia常用命令
     #查看所有已注册用户sofiastatusprofileinternalreg#查看已注册用户1006sofiastatusprofileinternalreg1006sofiastatusprofileinternaluser1006#删除已注......
  • find命令mtime,ctime,atime详解
    1、https://blog.csdn.net/Arlingtonroad/article/details/934664562、1.查找时间说明find./-name“*data*”-mtime+1当前目录下文件名包含data,而且修改时间在4......
  • docker-compose报错Traceback (most recent call last) 运行命令很慢
    [root@szweb32yml]#./docker-compose-vTraceback(mostrecentcalllast):File"docker-compose",line2,in<module>File"<frozenimportlib._bootstrap>",li......
  • Jsch远程执行shell脚本命令
    分享知识传递快乐JSch是JavaSecureChannel的缩写。JSch是一个SSH2的纯Java实现。它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成......
  • ubuntu18.04 如何安全的安装cuda开发环境
    1、打开系统自带的software&updates软件,进入additionaldrivers,选择最新的显卡驱动版本  2、在命令行输入nvidia-smi,查看对应的cuda版本  3、到英伟达网站下载......
  • 笔记本安装ubuntu,触控板右键失灵处理
    在安装Ubuntu®18.04LTS后,触摸板右键单击可能无法正常工作。这不是操作系统或触摸板的问题。Gnome默认使用Mac触摸板行为,其中整个触摸板是一个按钮。要右键单击,请......