Mryqu's Notes


  • 首页

  • 搜索
close

cut命令笔记

时间: 2013-10-22   |   分类: Tool   Linux     |   阅读: 77 字 ~1分钟

cut命令比较简单,但是也没测试过所有的选项,这里试一下没有细扣过的选项。

命令名
  cut -- 对文件每一行的选定部分进行裁剪

概要
  cut -b list [-n] [file ...]
  cut -c list [file ...]
  cut -f list [-d delim] [-s] [file ...]

描述
  cut工具会从每个文件每一行裁剪出选定部分并写入标准输出。如果没有指定file参数,或file参数为单个破折号('-'),cut将从标准输入进行读取。list指定可以是列位置或特定字符分隔的字段序号,起始值为1。
  
  list选项参数为逗号或空白字符分隔的数字或数字范围集合。数字范围可由数字+破折号('-')+第二个数字组成内包含范围。 数字和数字范围可以重复、重叠,但字段或列如果多次被选中,则仅显示一次。输入中没有选定的字段或列,不会报错。
  N-   从第N个开始到所在行结束的所有字节、字符或列
  N-M  从第N个开始到第M个之间(包括第M个)的所有字节、字符或列
  -M   从第1个开始到第M个之间(包括第M个)的所有字节、字符或列
  
  命令选项如下:
  
  -b list
          list指定字节位置。
  
  -c list
          list指定字符位置。
  
  -d delim
          使用delim而不是制表符作为字段分隔符。
  
  -f list
          list指定由字段分隔符(见-d选项)对输入分割后的字段。 输出字段由单个字段分隔符分开。
  
  -n      不拆分多字节字符。 仅在多字节字符全部选中的情况下,字符才会被输出。
  
  -s      抑制没有字段分隔符的行。如果没指定该选项的话,没有分隔符的行会原封不动地输出。

环境
  环境变量LANG、LC_ALL和LC_CTYPE将影响cut的执行结果。

退出码
  cut工具执行成功时返回0,执行出错时返回值大于0。

示例
  从系统passwd文件抽取用户登录名和Shell(5),显示成''name:shell''对:
        cut -d : -f 1,7 /etc/passwd
  
  显示当前登录用户的名称和登录时间:
        who | cut -c 1-16,26-38

个人体会

  • cut命令在unix/mac和linux/MinGW上实现并不一样。
  • cut命令在linux/MinGW上的实现忽略-n选项,此外通过GNU CoreUtils中的cut源码可知-b和-c选项实现是一样的,operating_mode变量都是枚举byte_mode,走的是cut_bytes函数。而unix/mac上的实现通过-n选项可以同时是否输出多字节字符的部分字节码。
  • cut命令在linux/MinGW上的实现还有–output-delimiter=STRING选项控制输出字符分隔符。

标题:cut命令笔记
作者:mryqu
声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!

#cut# #linux# #unix#
用find和grep搜索特定目录下特定文件中的特定关键字
grep命令笔记
  • 文章目录
  • 站点概览

Programmer & Architect

662 日志
27 分类
1472 标签
GitHub Twitter FB Page
    • 个人体会
© 2009 - 2023 Mryqu's Notes
Powered by - Hugo v0.120.4
Theme by - NexT
0%