linux命令_文本处理_cut_分隔行并显示

cut(remove sections from each line of files)

以行为单位,将被选中的部分显示到标准输出,不改变原文件的内容。
如果没有输入文件或输入文件为-,则从标准输入读入。

格式

cut OPTION... [FILE]...

参数说明

  • -b,--bytes=LIST 只选中指定字节的内容
  • -c,--characters=LIST 只选中指定的字符集
  • -d,--delimiter=DELIM 指定代替TAB的分隔符(分隔之后的每一个单元称为一个字段)
  • -f,--fields=LIST 指定需要显示的内容,一般会打印出没有被分割的行,除非使用了-s选项
  • -n 与-b连用,不分割多字节的字符
  • --complement 补全字节,字符或者字段的集合(不显示选中的内容,显示除去选中内容之后的内容)
  • -s,--only-delimited 不打印不包含分割符的行
  • --output-delimiter=STRING 使用字符串STRING代替输入的分隔符作为输出分隔符

-b,-c,-f中显示范围可以用以下格式指定:

  • N 第N个字节,字符或者字段,N从1开始计数
  • N- 从第N个字节,字符或者字段开始,知道行尾结束
  • N-M 从第N个直到第M个(包括)字节,字符或字段
  • -M 从第一个到第M个(包括)字节,字符或字段

使用实例

  1. 读取字节,字符或者字段

     [fish@localhost ~]$ echo 'abc' | cut -b2
     b
     [fish@localhost ~]$ echo 'abc' | cut -c 2
     b
     [fish@localhost ~]$ echo '我在学习' | cut -b2		# 汉字为三个字节,出现乱码
     ▒
     [fish@localhost ~]$ echo '我在学习' | cut -b2 -n	# -n 不分割多字节的字符,-nb类似于-c
     在
     [fish@localhost ~]$ echo '我在学习' | cut -b 4-6
     在
     [fish@localhost ~]$ echo '我在学习' | cut -c 2
     在
     [fish@localhost ~]$ echo '我在学习' | cut -b -6		# 从行首到第6个字节(包括)
     我在
     [fish@localhost ~]$ echo '我在学习' | cut -b 7-		# 从第7个(包括)字节到行尾
     学习
     [fish@localhost ~]$ echo '我在学习' | cut -c 2-3	# 从第2个字(包括)到第三个字(包括)
     在学
     [fish@localhost ~]$ echo 'a b c' | cut -d' ' -f2	# 空格为分隔符
     b
     [fish@localhost ~]$ echo '我#在#学#习' | cut -d '#' -f2		# [#]号为分隔符
     在
     [fish@localhost ~]$ echo '我#在#学#习' | cut -d '#' -f2-4	# 连续显示的情况下会打印分隔符
     在#学#习
     [fish@localhost ~]$ # 将上面的分隔符替换为别的字符串并输出
     [fish@localhost ~]$ echo '我#在#学#习' | cut -d '#' -f2-4 --output-delimiter=''
     在学习
    
  2. 不显示选中的内容

     [fish@localhost ~]$ echo 'abc' | cut -b2
     b
     [fish@localhost ~]$ echo 'abc' | cut -b2 --complement
     ac
     [fish@localhost ~]$ echo '我在学习' | cut -b 7-9
     学
     [fish@localhost ~]$ echo '我在学习' | cut -b 7-9  --complement
     我在习
    
posted @ 2020-12-20 23:26  简单_知行  阅读(689)  评论(0)    收藏  举报