Linux三剑客

type
status
date
slug
summary
tags
category
icon
password

bash

  • 命令展开
    • 命令别名
      • 命令历史
        • 快捷键

          RegExp

          这是个令人头疼的东西(
          • 基本正则 BRE
          • 扩展正则 ERE
          在Linux中仅受三剑客支持

          基本正则表达式BRE集合

          • 匹配字符
          • 匹配次数
          • 位置锚定
          符号
          作用
          ^
          用于模式的最左侧,如”^oldguy”,匹配以oldguy单词开头的行
          $
          用于模式的最右侧,如”oldguy$",匹配以oldguy单词结尾的行 | | ^$
          .
          匹配任意一个字符
          \
          转义
          *
          匹配前一个字符0或多次
          .*
          匹配所有内容
          ^.*
          匹配任意多个字符开头的内容
          .*$
          匹配任意多个字符结尾的内容
          [abc]
          匹配[]内的任意一个字符,也可以写成[a-c]
          [^abc]
          匹配除了^后面的任意字符

          扩展正则表达式ERE集合

          必须用grep -E才能生效
          字符
          作用
          +
          匹配前一个字符1次或多次
          [:/]+
          匹配括号内的”:“或者”/“字符一次或多次
          ?
          匹配前一个字符0或1次
          |
          表示或者,同时过滤多个字符串
          ()
          分组过滤
          a{n,m}
          匹配前一个字符最少[n,m]次
          a{n,}
          匹配前一个字符[n,∞)次
          a{n}
          匹配前一个字符正好n次
          a{,m}
          匹配前一个字符[0,m]次

          grep

          参数选项
          解释说明
          -v
          排除匹配结果(取反)
          -n
          显示匹配行与行号
          -i
          不区分大小写
          -c
          只统计匹配的行数
          -E
          扩展正则
          –color==auto
          为过滤结果添加颜色
          -w
          只匹配过滤的单词
          -o
          只输出匹配的内容
          普通正则案例
          扩展正则案例
          • +
            • ()
              • {n,m}&{n,}&{,m}

                sed

                notion image
                语法:
                选项:
                参数选项
                解释
                -n
                取消默认sed的输出,常与内置sed内置命令p一起使用
                -i
                直接将修改结果写入文件,不用-i修改的是内存数据
                -e
                多次编辑,不需要管道符
                -r
                支持正则
                常用内置命令字符:
                sed的内置命令字符
                解释
                a
                append,对文本追加,在指定行后面加一行/多行文本
                d
                Delete,删除匹配行
                i
                insert,表示插入文本,在指定行前面加一行/多行文本
                p
                Print,打印匹配行的内容,通常p和-n一起用
                s/正则/替换内容/g
                匹配正则内容,然后替换内容(支持正则),g代表全局匹配(可选)
                sed匹配范围:
                范围
                解释
                空地址
                全文处理
                单地址
                指定文件某一行
                /pattern/
                被模式匹配到的每一行
                范围区间
                10,20 十到二十行,10,+5 第十行开始向下五行,/pattern1/,/pattern2/
                步长
                12,表示第1、3、5、7、9行,22表示2、4、6、8、10行
                案例:
                • 打印某几行
                  • 模式匹配
                    • 增加/删除行
                      • 提取ip信息
                        • 假设ifconfig 第二行如下:

                      awk

                      这位更是重量级:sob:
                      语法:
                      awk '{print $2}'没有使用参数和模式,$2表示输出文本的第二列,$0表示整行
                      awk默认空格为分隔符,多个空格识别为一个空格
                      awk按行处理文件
                      $NF表示当前分割的最后一列,倒数第二列可以写成$(NF-1)
                      awk内置变量
                      内置变量
                      解释
                      $n
                      指定分隔符后,当前记录的第n个字段
                      $0
                      完整的输入记录
                      FS
                      输入字段分隔符,默认是空格
                      NF
                      分隔后当前行一共有多少个字段
                      NR
                      当前记录数,行数
                      FNR
                      个文件分别计数的行号
                      OFS
                      输出字段分隔符,默认是空格
                      RS
                      输入记录分隔符(输入换行符)
                      ORS
                      输出记录分隔符(输出换行符)
                      FILENAME
                      当前文件名
                      ARGC
                      命令行参数的个数
                      ARGV
                      数组,保存的是命令行给定的各参数
                      更多内置变量可以用man手册查看
                      man awk
                      自定义输出内容
                      awk必须外层单引号,内层双引号,内置变量$1、$2不得添加双引号
                      awk参数
                      参数
                      解释
                      -F
                      指定分隔字段符
                      -v
                      定义或修改一个awk内部的变量
                      -f
                      从脚本文件中读取awk命令
                      awk案例
                      test.txt文件如下
                      • 指定行
                        • FS输入分隔符
                          • OFS输出分隔符
                            • 处理多个文件显示行号(NR&FNR)
                              • a.txt
                                b.txt
                                输出:
                                输出:
                            • RS&ORS
                              • ARGV
                                • 自定义变量
                                  • awk格式化
                                    • printf需要指定format,不会自动换行
                                      符号
                                      含义
                                      %c
                                      显示字符的ASCII码
                                      %d/%i
                                      十进制整数;
                                      %e/%E
                                      科学计数法显示数值;
                                      %f
                                      显示浮点数
                                      %g/%G
                                      以科学计数法的格式或浮点数的格式显示数值
                                      %s
                                      显示字符串
                                      %u
                                      无符号整数
                                      %%
                                      显示%自身
                                      -
                                      左对齐;默认右对齐 例:printf “%-d”
                                      +
                                      显示数值符号例:printf “%+d”
                                      对passwd格式化
                                  • awk模式pattern
                                    • 特殊的pattern: BEGIN和END
                                    • BEGIN模式是处理文本之前需要执行的操作
                                    • END模式是处理完所有行之后执行的操作
                                    • pattern也可以理解为条件
                                      awk的模式
                                      关系运算符
                                      解释
                                      示例
                                      <
                                      小于
                                      x<y
                                      <=
                                      小于等于
                                      x<=y
                                      ==
                                      等于
                                      x==y
                                      !=
                                      不等于
                                      x!=y
                                      >=
                                      大于等于
                                      x>=y
                                      >
                                      大于
                                      x>y
                                      ~
                                      匹配正则
                                      x~/正则/
                                      !~
                                      不匹配正则
                                      x!~/正则/
                                  • awk与正则表达式
                                    • 找出/etc/passwd/usr/bin/false的用户
                                      找出两个用户之间的内容
                                      查看nginx访问access.log中访问最频繁的十个ip

                                  小练习(没写捏)

                                  • grep
                                  • sed
                                  • awk
                                  Git资源库
                                  • Waline