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  简单_知行  阅读(718)  评论(0)    收藏  举报