简介

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. 运用C#生成docx格式的报表

    这几天在北京做一个大桥的监测系统的项目,涉及到一个功能,那就是采集数据,处理后,希望能自动生成一个报表,只需要在一个模板的基础上加几个数就可以了,但因为希望生成的是.docx格式的word2007/2 ...

  2. Calendar日历小程序

    //有待完善,有点bugpackage com.sunshine.framework.calendar.model;import java.util.Calendar;/** * * <p> ...

  3. Xcode代码提示联想功能失效,按command键点不进去类库,提示“?”

    参考文档:这两篇文章很好的解决了问题.可以很好的解决了问题 Xcode代码提示联想功能失效,按command键点不进去类库,提示“?”,代码全是白色 Xcode4中代码补全(Code Completi ...

  4. Winform中checklistbox控件的常用方法

    Winform中checklistbox控件的常用方法最近用到checklistbox控件,在使用其过程中,收集了其相关的代码段1.添加项checkedListBox1.Items.Add(" ...

  5. 关于autoptr

    参考自: http://www.cppblog.com/expter/archive/2009/03/29/78270.html auto_ptr是什么. 解释1.auto_ptr是一个管理指针的对象 ...

  6. javascript 函数声明和函数表达式的区别(学习笔记)

    javascript中声明函数的方法有两种:函数声明式和函数表达式. 区别如下: 1).以函数声明的方法定义的函数,函数名是必须的,而函数表达式的函数名是可选的. 2).以函数声明的方法定义的函数,函 ...

  7. 物联网安全拔“牙”实战——低功耗蓝牙(BLE)初探

    物联网安全拔“牙”实战——低功耗蓝牙(BLE)初探 唐朝实验室 · 2015/10/30 10:22 Author: FengGou 0x00 目录 0x00 目录 0x01 前言 0x02 BLE概 ...

  8. JavaScript中的Math对象

    Math对象中提供的计算功能执行起来比你在代码中写的js要快得多,这是它的一个很好的优点.   属性: 属性 说明 Math.E 即常量e的值 Math.LN10 ln10 Math.LN2 ln2 ...

  9. 错误overlay id is not a dependency project原因分析

    之前按下面配置,一直会报标题中错误,有的同学说改成<overlay><id></id></overlay>就可以了,然而我这里竟然错误依旧. 奇怪的是间 ...

  10. /etc/rc.d/与/etc/rc.d/init.d的关系

    /etc/init.d指向/etc/rc.d/init.d目录 . 除了直接调用脚本外(如/etc/rc.d/init.d/xinetd),还可以用service命令来控制init.d目录下的服务如 ...