Linux三剑客

Linux三剑客之grep

linux三剑客之一,文本过滤器(根据文本内容过滤文件)。

语法格式:
    grep [参数] [匹配规则] [操作对象]

参数:
    -n : 过滤文本时,将过滤出来的内容在文件内的行号显示出来
    -A : 匹配成功之后,将匹配行的后n行显示出来
    -B : 匹配成功之后,将匹配行的前n行显示出来
    -C : 匹配成功之后,将匹配行的前后各n行显示出来
    -c :  只显示匹配成功的行数
    -o :  只显示匹配成功的内容
    -v :  反向过滤
    -q :  静默输出
    -i : 忽略大小写
    -l :  匹配成功之后,将文本的名称打印出来
    -R|-r : 递归匹配 

    -E : 使用拓展正则   等价于  egrep

知识储备:
    $? : 上一行命令执行的结果,0代表执行成功,其他数字代表执行失败。


Linux之正则
 1、正则表达式的分类(可配合grep使用)
    1、普通正则表达式
    2、拓展正则表达式

 2、普通正则表达式    
    ^  : 以某字符开头
    $  : 以某字符结尾
    .  : 匹配除换行符之外的任意单个字符
    *  :匹配前导字符的任意个数
    [] :某组字符串的任意一个字符
    [^]      : 取反
    [a-z]    : 匹配小写字母
    [A-Z]    : 匹配大写字母
    [a-zA-Z] : 匹配字母
    [0-9]    : 匹配数字
    \      : 取消转义
    ()     : 分组
        \n : 代表第n个分组
 3、拓展正则
    {}     :匹配的次数
        {n}    : 匹配n次
        {n,}   :至少匹配n次
        {n,m}  :匹配 n 到 m 次
        {,m}   :最多匹配m次
    +      :匹配至少有一个前导字符
    ?      : 匹配一个或零个前导字符
    |      :或

Linux三剑客之sed

  sed(流式编辑器) :主要用于修改文件

sed格式:
        sed [参数] '处理规则,指令' [操作对象]
参数:
     -e: 允许多项编辑
     -n: 取消默认输出
     -i: 就地编辑文本
     -r: 支持扩展正则表达式使用(正则表达式必须放在//中使用)
     -f: 指定定位规则
指令:
     p: 打印
     d: 删除
     g: 全局
     a: 在当前行后加一行或多行内容
     c: 用新文本替换当前行内容
     i: 在当前行插入文本
     r: 从文件以外读取相关的内容,写入相关行之后
     w: 匹配到的行写入一个新的文件之中
     y: 将字符转换成另一个新的字符 (一个一个的转换)
     s: 用一个字符整体替换成另外一个字符 (整体转换)
       (如需全体转换需配合g使用,在此处加i的话可忽略大小写)
   & :代表前面匹配到的内容
   "1~2"
: 偶数 "1~3" : 基数 "1~4" : 4的倍数 sed+正则表达式(定位): 1.数字 固定定位 sed -n ‘2p’ 路径 范围定位 sed -n '1,3p'路径 2.正则 必须放在//之间 正则匹配是非贪婪性的匹配 (贪婪性是匹配到后,不停的继续匹配,直至文件所有的内容加载完毕) (非贪婪性匹配,一旦匹配到了就停止匹配) 3.数字加正则 4
 .\c与c分隔符 \c与c只是一个代表,其中c可以换成任意一个字符

                      

Linux三剑客之首 awk

主要用于处理文本

语法:

​   awk [参数] [处理规则] [操作对象]

参数:

​   -F :指定文本分隔符 (默认为空格)

awk的生命周期:

​   (grep、sed、awk都是读一行处理一行,直到完成)

​     1.接收输入

​     2.读取输入数据到文本进行分解

​     3.使用规则处理文本

    ​ 4.输入一行,赋值给$0,直至处理完成

    ​ 5.把处理完之后的所有数据交给END{ }再次处理

awk中的定义变量:

    $0 : 代表当前行

    $n : 代表第n行

    NF : 记录当前行的字数

    NR : 用来记录行号

    FS : 指定文本内容分隔符 (默认空格)

    OFS : 指定打印分隔符

awk中的函数: ​   print :打印 ​   printf :格式化打印 ​   %s :字符串   ​ %d :数字    - :左对齐 + :右对齐 awk中的定位:
  ​ 1.正则表达式       ​ / / ​       awk -F: '/^xxx/' /etc/passwd ​   2.比较表达式       > ,< ,>= ,<=
      ~ 正则匹配
      !~ 正则匹配(取反)   ​ 3.逻辑表达式       && : 逻辑与       || :逻辑或       ! :逻辑非 ​   4.算术表达式       + ,- ,* ,/ ,% ​   5.条件表达式       == ,> ,< ,>= ,<= ​   6.范围表达式       ​ awk -F: '/头/,/尾/{print $0}' 路径 流程控制: ​   只存在循环之中 ​   if:     ​ 单分支:if (){}     ​ 双分支:if(){}else{} ​     多分支:if(){}else if(){}else{}   ​ for: ​     for(i="初始值";条件判断;游标){} ​   while: ​     while(条件判断){}

                            

文本处理命令

  1.sort 命令

    用于将文件内容排序

      参数:

        -n # 依照数值的大小排序
        -r # 以相反的顺序来排序
        -k # 以某列进行排序
        -t # 指定分割符,默认是以空格为分隔符

  2.uniq 命令

    用于检查文本文件中重复出现的行

      参数:

        -c # 在每列旁边显示该行重复出现的次数
        -d # 仅显示重复出现的行列
        -u # 仅显示出一次的行列

  3.cut 命令

    用于显示行中指定的部分

      参数:     

        -d # 指定字段的分隔符
        -f # 显示指定字段的内容

  4.tr 命令

    替换或删除命令

      参数:

        -d # 删除字符

  5.wc 命令

    统计数字

      参数:

        -c # 统计文件的Bytes数
        -l # 统计文件的行数
        -w # 统计文件中单词的个数,默认以空白字符做为分隔符

    (注:在Linux系统中,一段连续的数字或字母组合为一个词。)

 

posted @ 2021-12-20 21:31  代小白菜  阅读(211)  评论(0)    收藏  举报