cut - 小巧的文本截取工具
简介
cut命令是Unix下的一个命令行程序。cut命令是以行为单位来处理的。cut命令处理的是标准输入,所以可以结合管道来进行文本的处理。
命令格式
cut option… [file]…
cut命令的option部分可以是如下的一些选项:
-b, --bytes=LIST 选择指定数目LIST的字节
-c, --characters=LIST 选择指定数目LIST的字符
-d, --delimiter=DELIM 使用DELIM作为内容的分隔符,而不是使用默认的制表符(tab)作为分隔符
-f, --fields=LIST 选择LIST指定的LIST部分内容,输出选中的内容,并且如果字符没有包含分隔符,则也同样输出,除非指定了-s选项
-n 和-b一起使用,表示在选择字节的时候,对于多字节的字符不进行分隔,多字节的字符被看作一个字节
-s, --only-delimited 不输出不包含分隔符的行
--output-delimiter=STRING 使用STRING作为输出内容中的分隔符,而不是使用原来标准输入中的分隔符。
Note:对于选项-b, -c, -f,只能在一个命令被指定其中的一项。
命令结果的输出的顺序和待处理数据在输入时的顺序是一样的。
对于一个LIST,可以是一个范围,也可以是多个由逗号分隔的多个范围。
LIST的格式:
N 表示指定N个数据单元,计数从1开始
N- 从第N个数据单元开始到行结束
N-M 从第N个数据单元到第M个数据单元(包括)
-M 从行的开始到底M个数据单元(包括)
其中的数据单元可以是:字节,字符,数据块
Note:如果命令中没有指定FILE或者FILE是"-",则默认是读取标准输入。
用法
在Linux下环境变量PATH中包含了由”:”分隔的变量的查找路径,假设我们需要截取其中的其中的第二个路径,则可以使用如下的方法:
echo $PATH | cut -d ':' -f
如果需要截取PATH变量中从第二个路径开始到结束的所有内容,可以使用如下的方法:
echo $PATH | cut -d ':' -f -
如果需要截取内容从开始到第3部分的内容,则可以使用如下的命令:
echo $PATH | cut -d ‘:’ -f –
如果是截取从第2部分到第3部分的内容,则可以使用如下的命令:
echo $PATH | cut -d ':' -
如果碰到一样是不包含任何分隔符的,那么实际上这一样我们可能不需要任何处理,cut默认是会原样输出的,如果你不需要它们输出,
则可以使用选项’-s’来阻止那些不包含指定分隔符的行:
echo $PATH | cut -s -d ':' -f
上述的-d选项可以用于有明显的分隔符存在的情况下使用,在格式明显的文本行处理中可以方便的对行进行截取。除了利用分隔符来截取分隔文本,对于没有分隔格式的字符文本还可以进行指定字符个数的截取,那就是-c选项了:
取出一行文本中的第3个字节:
echo 'hello' | cut -c
同样的,如果需要输出指定范围内的字符,则可以使用n-m的方式指定范围
echo 'hello' | cut -c - #输出行开始到第2个字符的内容
echo 'hello' | cut -c - #输出第2到3个字符
echo 'hello' | cut -c - #输出从第二字符开始到行结束的内容
在输出的时候,如果需要指定一种另外的分隔符来分隔输出的内容,以替代原来的分隔符,则可以使用--output-delimiter来处理
echo $PATH | cut -d ':' -f - --output-delimiter='*'
则输出的PATH变量就是以*作为分隔符,而不是使用:来作为分隔符,是不是很方便?
当cut遇上Vim
想象一下,如果cut命令和Vim配合使用,是不是可以完成很多霸气的操作呢,嘻嘻!且看:
假设我在Vim中正在编辑这样的文本:

我想把分隔数字的*改成冒号:,怎么办呢?一个一个改?,你或许会想到在Vim下的模式替换来处理,这确实是一个好方法。如果Vim结合cut命令来处理,也可以达到异曲同工的效果:
使用Vim下的模式替换命令:
Shift+V #选中当前的行
:s/\*/:/g #使用s命令进行替换,由于*在Vim中是由特殊含义的,需要使用反斜杠来转义
使用cut命令来处理:
Shift+V #选中光标所在的行
:!cut -d '*' -f - --output-delimiter=':'
两个命令的执行结果都一样,变成这样了:

所以,cut命令配合Vim,也可以是一种有效的文本编辑的方法。这不也是Unix下的KISS模式的一种体现吗?
cut - 小巧的文本截取工具的更多相关文章
- Linux Shell 文本处理工具集锦--Awk―sed―cut(row-based, column-based),find、grep、xargs、sort、uniq、tr、cut、paste、wc
本文将介绍Linux下使用Shell处理文本时最常用的工具:find.grep.xargs.sort.uniq.tr.cut.paste.wc.sed.awk:提供的例子和参数都是最常用和最为实用的: ...
- 文本处理工具(cut,sort,tr,grep等)
命令目录,查看某一个命令可点击直接跳转: 文件查看 cat tac rev more less 按行截取 head tail 转化内容 tr 按列操作 cut paste 分析文本 wc sort u ...
- 几个简单的文本处理工具:diff,patch,grep,cut,sort,tr
1:文本处理工具: 1:diff and patch : diff是比较文件或者目录的不同,主要有3个用法: diff file1 file2 :比较file1和file2的不同:diff -u ...
- 系统资源监控——联用awk与grep文本处理工具,截取磁盘使用量字段
一.使用到的命令行 1.df : df -h #将磁盘使用量用表的形式呈现. 2.awk: awk '{print $5}' #默认分隔符是空格,$后的数字是指定从第几列开始截取. awk -F [] ...
- Linux Shell 文本处理工具集锦 zz
内容目录: find 文件查找 grep 文本搜索 xargs 命令行参数转换 sort 排序 uniq 消除重复行 用tr进行转换 cut 按列切分文本 paste 按列拼接文本 wc 统计行和字符 ...
- Linux Shell 文本处理工具集锦
本文将介绍Linux下使用Shell处理文本时最常用的工具:find.grep.xargs.sort.uniq.tr.cut.paste.wc.sed.awk:提供的例子和参数都是最常用和最为实用的: ...
- [转] Linux Shell 文本处理工具集锦
内容目录: find 文件查找 grep 文本搜索 xargs 命令行参数转换 sort 排序 uniq 消除重复行 用tr进行转换 cut 按列切分文本 paste 按列拼接文本 wc 统计行和字符 ...
- Linux正则与文本处理工具(10)
正则表达式 (Regular Expression, RE, 或称为常规表达式)是通过一些特殊字符的排列,用于『查找/替换/删除』一行或多行文字或字符串,简单的说,正则表达式就是用在字串的处理上面的一 ...
- Linux Shell 文本处理工具集锦(转载)
内容目录: find 文件查找 grep 文本搜索 xargs 命令行参数转换 sort 排序 uniq 消除重复行 用tr进行转换 cut 按列切分文本 paste 按列拼接文本 wc 统计行和字符 ...
随机推荐
- [问题2014S05] 复旦高等代数II(13级)每周一题(第五教学周)
[问题2014S05] 设 \(A,B\) 分别是 \(4\times 3\) 和 \(3\times 4\) 实矩阵, \[ BA=\begin{pmatrix}-9 & -20 & ...
- Deep Learning Papers Reading Roadmap
Deep Learning Papers Reading Roadmap https://github.com/songrotek/Deep-Learning-Papers-Reading-Roadm ...
- 关于jQuery源码分析
http://www.w3ctech.com/topic/256 jQuery源码剖析(一)——概览&工具方法
- static(静态、修饰符)
static(静态.修饰符) static修饰成员变量时:static修饰成员变量时,那么该成员变量的数据就是一个共享的数据. 静态成员变量的访问方式: 方式一: 使用对象进行访问. 对象.属性名 方 ...
- mybatis-config.xml简单笔记
mybatis-config.xml简单笔记 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ...
- 软件测试--测试Demo
视频地址(第二课时):https://pan.baidu.com/s/1gfLVC2n 软件安装好了! 软件默认的浏览器是火狐. 如果需要IE,chrome,都在前一篇的安装包里有. 测试结果 视频里 ...
- Server asks us to fall back to SIMPLE auth, but this client is configured to only allow secure connections.
我是在flume向hdfs 写(sink)数据时遇到的这个错误. Server (是指hdfs) asks us to fall back to SIMPLE auth, but this clien ...
- JavaScript基础知识汇总
1. 图片热区: <img src="logo.jpg" usemap="#logo"> <map id="logo" n ...
- 动态内存分配导致Javascript性能的问题
内存分配对性能的影响是很大的,分配内存本身需要时间,垃圾回收器回收内存也需要时间,所以应该尽量避免在堆里分配内存.不过直到最近优化HoLa cantk时,我才深刻的体会到内存分配对性能的影响,其中有一 ...
- 0505 Scrum 项目1.0
应用NABCD模型,分析你们初步选定的项目,充分说明你们选题的理由. 录制为演说视频,上传到视频网站,并把链接发到团队博客上. 团队项目选题 一个售书网站(O2O) NABCD 模型 1) N (N ...