linux命令--cut的使用
cut 是一个选取命令,将一段数据进行分析,取得我们想要的
语法:
cut (参数)(文件)
常用参数:
-b:仅显示行中指定直接范围的内容;(以字节为单位分割) -c:仅显示行中指定范围的字符;(以字符为单位分割) -d:指定字段的分隔符,默认的字段分隔符为“TAB”; -f:显示指定字段的内容; (以字段为分隔符) -n:与“-b”选项连用,不分割多字节字符; --complement:补足被选择的字节、字符或字段; --out-delimiter=<字段分隔符>:指定输出内容是的字段分割符; --help:显示指令的帮助信息; --version:显示指令的版本信息。
cut命令主要是接受三个定位方法:
第一,字节(bytes),用选项-b
第二,字符(characters),用选项-c
第三,域(fields),用选项-f
1、以“字节”定位
[root@xiaojin oldboy]# who
root pts/1 2019-01-08 20:27 (10.0.0.1)
[root@xiaojin oldboy]# who|cut -b 3
o
如果“字节”定位中,我想提取第3,第4、第5和第8个字节,怎么办?
-b支持形如3-5的写法,而且多个定位之间用逗号隔开就成了。
[root@xiaojin oldboy]# who
root pts/1 2019-01-08 20:27 (10.0.0.1)
[root@xiaojin oldboy]# who|cut -b 3-5,10
ot p
注意:cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。可不能颠倒定位的顺序哦。如下:
[root@xiaojin oldboy]# who|cut -b 3-5,10
ot p
[root@xiaojin oldboy]# ^C
[root@xiaojin oldboy]# who|cut -b 10,3-5
ot p
还有哪些类似-3,3-这样的写法,如下
[root@xiaojin oldboy]# who|cut -b -3
roo
[root@xiaojin oldboy]# who|cut -b 3-
ot pts/1 2019-01-08 20:27 (10.0.0.1)
-3表示从第一个字节到第三个字节,而3-表示从第三个字节到行尾。
如果我执行who|cut -b -3,3-,会输出整行,不会出现连续两个重叠的c的。如下:
[root@xiaojin oldboy]# who|cut -b -3,3-
root pts/1 2019-01-08 20:27 (10.0.0.1)
2、以字符为定位
提取第3,第4,第5和第8个字符:
[rocrocket@rocrocket programming]$ cat cut_ch.txt
星期一
星期二
星期三
星期四
[rocrocket@rocrocket programming]$ cut -b 3 cut_ch.txt
�
�
�
�
[rocrocket@rocrocket programming]$ cut -c 3 cut_ch.txt
一
二
三
四
看到了吧,用-c则会以字符为单位,输出正常;而-b只会傻傻的以字节(8位二进制位)来计算,输出就是乱码。
当遇到多字节字符时,可以使用-n选项,-n用于告诉cut不要将多字节字符拆开。如下:
[rocrocket@rocrocket programming]$ cat cut_ch.txt |cut -b 2
�
�
�
�
[rocrocket@rocrocket programming]$ cat cut_ch.txt |cut -nb 2
[rocrocket@rocrocket programming]$ cat cut_ch.txt |cut -nb 1,2,3
星
星
星
星
3、以字段为定位
测试文件
cat >>test01.txt<<EOF
No Name Mark Percent
01 tom 69 91
02 jack 71 87
03 alex 68 98
EOF
-f 选项提取指定字段,一半配合-d使用
[root@xiaojin oldboy]# cut -d " " -f 2 test01.txt
Name
tom
jack
alex
[root@xiaojin oldboy]# cut -d " " -f 2,3 test01.txt
Name Mark
tom 69
jack 71
alex 68
与-b,-c的区别
[root@xiaojin oldboy]# cut -c 1 test01.txt
N
0
0
0
[root@xiaojin oldboy]# cut -b 2 test01.txt
o
1
2
3
--complement 选项提取指定字段之外的列(打印除了第二列之外的列):
[root@xiaojin oldboy]# cut -d " " -f 2 --complement test01.txt
No Mark Percent
01 69 91
02 71 87
03 68 98
[root@xiaojin oldboy]# cut -d " " -f 2 test01.txt
Name
tom
jack
alex
[root@xiaojin oldboy]# cat test01.txt
No Name Mark Percent
01 tom 69 91
02 jack 71 87
03 alex 68 98
4、-d 指定分隔符
[root@xiaojin oldboy]# cut -d " " -f 2 test01.txt
Name
tom
jack
alex
[root@xiaojin oldboy]# cat test01.txt
No Name Mark Percent
01 tom 69 91
02 jack 71 87
03 alex 68 98
linux命令--cut的使用的更多相关文章
- Linux命令-cut篇
Cut 命令是常用的 Linux 命令,在这里总结一下平时常用的参数和用法,方便查证. 常用参数: -b:以字节为单位进行分割: -c:以字符为单位进行分割: -d:自定义分割符进行分割,默认为制表符 ...
- Linux命令-cut
cut命令用于通过列来提取文本字符 格式:cut [参数] 文本 将/etc/paswd文件以:分割(-d:),获取第七列的内容(-f1) [root@localhost test]# cut -d: ...
- Linux命令cut
原文 cut 文件内容查看 显示行中的指定部分,删除文件中指定字段 显示文件的内容,类似于下的type命令. 说明 该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指明的文件,将 ...
- linux 命令 — cut
cut 以列的方式格式化输出 依赖定界符 cut -f field_list filename 以默认定界符(tab,制表符)分割文件的列,输出指定的列field_list,field_list由列号 ...
- Linux 之Cut命令详解
摘自:http://blog.csdn.net/zsf8701/article/details/7718680 Linux 之Cut命令详解 cut是一个选取命令,就是将一段数据经过分析,取出我们想要 ...
- Linux管线命令 - cut,grep,sort,uniq,wc,tee,tr,col,join,paste,expand,split,xargs
在每个管线后面接的第一个数据必定是『命令』喔!而且这个命令必须要能够接受 standard input 的数据才行,这样的命令才可以是为『管线命令』,例如 less, more, head, tail ...
- [转帖]Linux:cut命令详解
Linux:cut命令详解 https://www.cnblogs.com/Spiro-K/p/6361646.html cut -f cut -f -d cut -c1- 这三个命令好像最常见, 记 ...
- linux中cut命令与tr命令
目录 一:linux中cut命令 1.cut 命令作用 2.参数 3.参数案例解析: 二:tr命令 1.tr命令作用 2.tr命令格式 3.tr命令参数 4.案例解析: 一:linux中cut命令 1 ...
- linux shell cut 命令
cut命令 cut命令用于从文件或者标准输入中读取内容并截取每一行的特定部分并送到标准输出. 截取的方式有三种:一是按照字符位置,二是按照字节位置,三是使用一个分隔符将一行分割成多个field,并提取 ...
随机推荐
- maven使用utf8等
pom.xml: <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncodi ...
- 《DSP using MATLAB》Problem 7.27
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...
- SQL盲注学习
如果数据库运行返回结果时只反馈对错不会返回数据库当中的信息 此时可以采用逻辑判断是否正确的盲注来获取信息 盲注是不能通过直接显示的途径来获取数据库数据的方法 1.布尔盲注 2.时间盲注 3.报错型盲注 ...
- django-微信小程序登录
小程序登录逻辑前端通过调用wx.login()获取code, 将code和用户基本信息发送到后端,后端通过request.get向微信服务器发送get请求获取用户openid和session_key, ...
- c# 中 利用 CookieContainer 对 Cookie 进行序列化和反序列化校验
private void Form1_Load(object sender, EventArgs e) { var cookieStr = @".CNBlogsCookie=1BE76122 ...
- Linux基础入门-文件系统操作与磁盘管理
一.简单文件系统操作: df (-h) 查看磁盘容量: rootfs作为系统启动时内核载入内存之后,在挂载真正的磁盘之前的一个临时文件系统: /dev/sda2 对应主机硬盘的分区,后面的a表示第几块 ...
- DateTime?,也是一种类型,代表DateTime或NULL两种类型,在处理空时间时比较有用
public static DateTime? GetDateTimeFromStr(string date) { if (date.Trim() == string.Empty) return nu ...
- 配置Tomcat使用https协议(配置SSL协议)
配置Tomcat使用https协议(配置SSL协议) 2014-01-20 16:38 58915人阅读 评论(3) 收藏 举报 转载地址:http://ln-ydc.iteye.com/blog/1 ...
- 如何快速开发html5跨平台K12/幼儿交互课件、动画课件、交互游戏
flash交互课件能生动表达教学内容,也深受广大教育工作者的喜爱,但是目前flash课件只能在pc电脑平台上进行展示,随着移动网络的发展,越来越多的课件产品需要移殖到各种移动平台(手机,pad,智能电 ...
- 【凡尘】---react-redux---【react】
一.Redux与组件 react-redux是一个第三方插件使我们在react上更方便的来使用redux这个数据架构 React-Redux提供connect方法,用于从UI组件生成容器组件,conn ...