• Linux命令之文本处理(二)


    1. cut命令
      cut命令用来操作文件的列,能够视为列编辑器;与之相应是大多数的行“编辑器”。如sed、grep、sort等,它们操作文本时,以行为单位。
      cut的主要功能就是输出文本的某一列或几列。对于英文文本,一个字符就占领一列,所以输出几列就是输出几个字符。
      主要选项例如以下:

      • -c : 指定要输出的列数,能够是单个数字,也能够是如3-5之类的范围。

        m@meng:~$ cat new 
        apple   3
        Apple   7
        pear    6
        pear    4
        banana  1
        orange  11
        m@meng:~$ cut -c 1-6 new 
        apple  
        Apple  
        pear    
        pear    
        banana
        orange
      • -b : 指定每行要输出的字节数。与-c选项基本一样,尤其对英文文本,由于一个英文字母就是一个字节(我认为把英文改成ASCII文本更合适)。

        m@meng:~$ cut -b 3 new 
        p
        p
        a
        a
        n
        a
      • -f : cut更强大的地方在于处理格式化的文本,即每行能够分为几个字段的那种。似乎非常多命令都提供这样的功能,比方sort,可是做的都非常勉强。关键是它们对分隔符的识别太差了。在这方面。awk遥遥率先。
        -f选项用来指定输出哪个字段。默认的分隔符是tab。

        事实上多个空格似乎也能识别。有时间我会专门研究一下分隔符的问题。

        m@meng:~$ cut -f 2 new 
        3
        7
        6
        4
        1
        11

      实际上new文件里名字和数字之间的分隔符并非tab,而cut却正确识别了;然而,这样的情况是不确定的,比方下例:

      m@meng:/etc/network$ sudo netstat -apn | sed '3,6 p' -n | cut -f 1
      tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      2899/sendmail: MTA:
      tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      1192/named      
      tcp        0      0 0.0.0.0:538             0.0.0.0:*               LISTEN      1251/gdomap     
      tcp        0      0 0.0.0.0:445             0.0.0.0:*               LISTEN      672/smbd 

      这么明显的分隔都没能识别,源代码怎么写的???

      • -d : 指定分隔符。一般配合-f使用。分隔符一般仅仅能指定单个字符。
      • -s : 仅输出包括分隔符的行。它会覆盖-f的一些功能,由于仅仅有-f时,会同一时候输出不包括分隔符的行;加上-s选项后,就会删除掉没有包括分隔符的行。
      • –output-delimiter=str : 指定输出分隔符为str。

        默认与输入分隔符一致。


        m@meng:~$ cut --output-delimiter=: -f 1-2 new 
        apple: 3
        Apple: 7
        pear: 6
        pear: 4
        banana: 1
        orange: 11
        m@meng:~$ cut --output-delimiter=: -c 1-4 new 
        appl
        Appl
        pear
        pear
        bana
        oran

      显然,这个选项仅仅对不同字段之间有效。。。

    2. uniq命令
      能够检測出文本中反复的行,相似与sort中-u选项。

      • -d : 仅仅显示那些反复的行。

        m@meng:~$ cat new 
        apple   3
        apple   3
        Apple   7
        pear    6
        pear    4
        banana  1
        orange  11
        m@meng:~$ uniq -d new 
        apple   3
      • -c,–count : 在每行前面显示反复次数。

        m@meng:~$ uniq -c new 
        2 apple     3
        1 Apple   7
        1 pear    6
        1 pear  4
        1 banana  1
        1 orange    11
      • -i : 忽略大写和小写。

      • -u : 仅输出不反复的行。
        m@meng:~$ uniq -u new 
        Apple   7
        pear    6
        pear    4
        banana  1
        orange  11

      基本的就是这几个选项了。其它的比方-s、-f等,试了几次无论用。

  • 相关阅读:
    【重要】攻击动作时间段判断~使用动画time比较动画length和使用一个变量数组做延迟
    角色头上冒数字
    ApplicationListener接口的生命周期
    Blender软件基本介绍(3D建模软件)
    unity中给图片换颜色
    Unity中建立文本保存数据
    UGUI脚本添加Btn回调的方法
    碰撞体速度过快穿透的问题
    Unity中的点击,长按,划动
    在对话系统中实现打字机效果
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5147935.html
Copyright © 2020-2023  润新知