简介

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 - 小巧的文本截取工具的更多相关文章

  1. 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:提供的例子和参数都是最常用和最为实用的: ...

  2. 文本处理工具(cut,sort,tr,grep等)

    命令目录,查看某一个命令可点击直接跳转: 文件查看 cat tac rev more less 按行截取 head tail 转化内容 tr 按列操作 cut paste 分析文本 wc sort u ...

  3. 几个简单的文本处理工具:diff,patch,grep,cut,sort,tr

    1:文本处理工具:   1:diff and patch : diff是比较文件或者目录的不同,主要有3个用法: diff file1 file2 :比较file1和file2的不同:diff -u ...

  4. 系统资源监控——联用awk与grep文本处理工具,截取磁盘使用量字段

    一.使用到的命令行 1.df : df -h #将磁盘使用量用表的形式呈现. 2.awk: awk '{print $5}' #默认分隔符是空格,$后的数字是指定从第几列开始截取. awk -F [] ...

  5. Linux Shell 文本处理工具集锦 zz

    内容目录: find 文件查找 grep 文本搜索 xargs 命令行参数转换 sort 排序 uniq 消除重复行 用tr进行转换 cut 按列切分文本 paste 按列拼接文本 wc 统计行和字符 ...

  6. Linux Shell 文本处理工具集锦

    本文将介绍Linux下使用Shell处理文本时最常用的工具:find.grep.xargs.sort.uniq.tr.cut.paste.wc.sed.awk:提供的例子和参数都是最常用和最为实用的: ...

  7. [转] Linux Shell 文本处理工具集锦

    内容目录: find 文件查找 grep 文本搜索 xargs 命令行参数转换 sort 排序 uniq 消除重复行 用tr进行转换 cut 按列切分文本 paste 按列拼接文本 wc 统计行和字符 ...

  8. Linux正则与文本处理工具(10)

    正则表达式 (Regular Expression, RE, 或称为常规表达式)是通过一些特殊字符的排列,用于『查找/替换/删除』一行或多行文字或字符串,简单的说,正则表达式就是用在字串的处理上面的一 ...

  9. Linux Shell 文本处理工具集锦(转载)

    内容目录: find 文件查找 grep 文本搜索 xargs 命令行参数转换 sort 排序 uniq 消除重复行 用tr进行转换 cut 按列切分文本 paste 按列拼接文本 wc 统计行和字符 ...

随机推荐

  1. Install Google Pinyin on Ubuntu 14.04

    Install Google Pinyin on Ubuntu 14.04 I've been spending more and more time on Ubuntu and I'm not us ...

  2. 如何理解 Java 中的 <T extends Comparable<? super T>>

    Java 中类似 <T extends Comparable<? super T>> 这样的类型参数 (Type Parameter) 在 JDK 中或工具类方法中经常能看到. ...

  3. SSH2 框架下的分页

    1.设计分页实体(pageBean) 这里我显示的是3-12页的方式: package cn.itcast.oa.domain; import java.util.List; /** * 封装分页信息 ...

  4. LCT专题练习

    [bzoj2049]洞穴勘测 http://www.cnblogs.com/Sdchr/p/6188628.html 小结 (1)LCT可以方便维护树的连通性,但是图的连通性的维护貌似很麻烦. [bz ...

  5. selenium 安装与 chromedriver安装

    直接使用pip安装 pip slenium 用 Chrome 浏览器来测试   from selenium import webdriver browser = webdriver.Chrome() ...

  6. Svn与Git的一些区别(转载)

    把第一条理解到位思想到位了做起来才会有的放矢,其他几条都是用的时候才能体会到 1) 最核心的区别Git是分布式的,而Svn不是分布的.能理解这点,上手会很容易,声明一点Git并不是目前唯一的分布式版本 ...

  7. android 发短信

    SmsManager smsManager = SmsManager.getDefault(); List<String> divideContents = smsManager.divi ...

  8. ITPUB网站的知识索引汇总

    1. ITPUB知识索引树 http://www.itpub.net/tree/ http://www.itpub.net/pubtree/index.htm 2. ITPUB知识索引贴——全文索引 ...

  9. spring mvc 注解 学习笔记(一)

    以前接触过spring,但是没有接触spring mvc 以及注解的应用,特习之,记之: 注解了解 @Component 是通用标注, @Controller 标注web控制器, @Service 标 ...

  10. OC方法和文件编译

    OC方法和文件编译 一.OC方法 (一)对象方法 (1)对象方法以-开头如 -(void)xx; (2)对象方法只能又对象来调用 (3)对象方法中可以访问当前对象的成员变量 (4)调用格式   [对象 ...