linux sh cut,Linux shell cut命令

cut是以每一行为一个处理对象的。cut一般以什么为依据呢? 也就是说,我怎么告诉cut我想定位到的剪切内容呢?

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。

主要参数-b :输入每行第n个字符(半角,注意如果有中文将乱码)。

-c :输入每行第n个字符(适用中文)。

-d :自定义分隔符,默认为制表符。

-f :与-d一起使用,指定显示哪个区域。

-n :取消分割多字节字符(例如中文)。仅和-b标志一起使用。

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

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

292e948d10c2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

-b支持形如3-5的写法,而且多个定位之间用逗号隔开。

292e948d10c2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

但有一点要注意,cut命令如果使用了-b选项,那么执行此命令时,cut会先把-b后面所有的定位进行从小到大排序,然后再提取。

292e948d10c2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

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

292e948d10c2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

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

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

为什么会有“域”的提取呢,因为刚才提到的-b和-c只能在固定格式的文档中提取信息,而对于非固定格式的信息则束手无策。这时候“域”就派上用场了。

如果你观察过/etc/passwd文件,你会发现,它并不像who的输出信息那样具有固定格式,而是比较零散的排放。但是,冒号在这个文件的每一行中都起到了非常重要的作用,冒号用来隔开每一个项。

我们很幸运,cut命令提供了这样的提取方式,具体的说就是设置“间隔符”,再设置“提取第几个域”,就OK了!

292e948d10c2?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

缺陷和不足

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值