自学内容网 自学内容网

linux,1.正则表达式, 2.sed工具, 3.awk

一.正则表达式
    1.egrep过滤工具(输出匹配行):筛选出文本中指定条件的行
        (1)以行为单位,逐行进行处理,默认只"输出"与表达式相匹配的"文本行"
            egrep:扩展正则
            grep:基本正则
        (2)语法
            格式1,文件(单引号)
                egrep [选项] '正则'  文件
            格式2,命令
                命令 | egrep [选项] '正则'
        (3)[选项]:
            (1)-i:忽略大小写
            (2)-v:去反
            (3)-c:统计匹配的行数
            (4)-q:无任何输出,一般用于检测命令是否执行成功
            (5)-n:显示出匹配结果所在行号
            (6)--color:标红显示匹配字符串
    2.符号匹配规则
        1.整体和或者匹配
            (1)(ab):匹配包含(ab)的行
            (2)| : root | bin :匹配root或者bin
        2.行首尾及单字匹配
            (1)^:匹配以什么开头(^abc:以abc开头的行)
            (2)$:匹配以什么结尾(abc$:以abc结尾的行)
            (3).:匹配任意单个字符
        3.未定匹配次数
            (1)+:至少匹配1次( (ab)+:一个或者多个连续的ab)
            (2)?:最多匹配1次(a?:0个或1个a)
            (3)*:代表次数,匹配前一个字符的0或任意次数(不可单独使用)
        4.{}限定次数匹配
            (1)(){n}:匹配n次( (ab){2}:匹配abab)
            (2)(){n,m}:匹配n-m次数 ( (ab){1,2}:匹配ab,abab)
            (3)(){n,}:至少匹配n次( (ab){2,}:匹配abab及以上的连续)
        5.[]范围内单字匹配:[]内可加^取反[^]
            (1)[a3?]:匹配a,3,?的行 == .
            (2)[a-z]:匹配任意小写字母的行
            (3)[A-Z]:匹配任意大写字母的行
            (4)[0-9]:匹配任意数字的行
            (5)[a-Z0-9]:匹配任意数字或者字母的行
            (6)[^A-Z]:匹配包括非大写字母的行
            (7)^[^a-z]:匹配非小写字母开头的行
        6.转义字符的边界匹配
            (1)\b:单词边界,\broot\b,严格匹配root
            (2)\<:单词开头,\<th,th开头的单词
            (3)\>:单词结束,一般与\<结合使用,\<root\> 等同于 \broot\b
            (4)\w:匹配数字,字母,下划线,所在行,
            (5)\s:匹配空白所在行,
            (6)\d:匹配[0-9]的数字=[0-9],用法:grep -P '\d' user 
二.sed工具
    1.作用:
        非交互式对文本进行增,删,改,查等操作,
        逐行处理,将结果输出到屏幕
        每个指令之间用//分隔:sed -rn "/^(root)|^(bin)/p" user
    2.语法:
        格式1:(单引号)
            sed [选项] '/条件/和指令'  文件 (条件为行号或者/正则/(扩展正则加上-r),指令为参数)
        格式2
            命令 | sed [选项]  '条件和指令'
    3.选项
        (1)-n:屏蔽输出,不加默认输出全部原文内容
        (2)-r:启用扩展的正则表达式,不写支持基本
        (3)-i:修改原文件内容,不加的时候所有操作只输出效果,不改原文件
    4.指令
        (1)p:(查)打印行,2,4p:打印2,3,4行,2p;4p:打印2行4行 sed -rn "/1/p" user
        (2)d:(删)删除行,(!d删除不包含什么的行),2,4d:删除2,3,4行
        (3)s:(改)替换,不加-n内容全部输出逐行替换
            :/,可以使用#,&等,便于修改文件路径
            s/a/b/4:将每行的第4个a字符替换为b字符(省略数字表示每行第一个)
            s#lod#new#g:将每行所有old替换为new  (改全文)
            m,ns/原数据/新数据/g:指定行数替换所有匹配的内容
        (4)sed文本块处理:增
            (1)i:行前面插入文本,2ixx:在第2行前添加文本xx
            (2)a:行后插入文本,2axx:在第2行后添加文本xx
            (3)c:替换当前行,2cxx:将第二行的内容替换为xx
        sed与正则结合例子:
            sed -rn '/xx/s/2017/2002/g a.txt:找含有xx的行,将里面的所有2017替换成2002
    5.sed特殊用法
        (1)sed -n '1!p' 文件名: 输出除了第一行的内容,!表示取反
        (2)sed -n '$p' xx:输出最后一行
        (3)sed -n '='  xx  :输出行号,$=:输出最后一行的行号
        (4)sed -n '1~2p' xx :打印奇数行,1为基准,~2,起跳2行
三.awk
    1.作用
        将满足条件的行和列内容输出
    2.语法
        (1) awk [选项] '条件{指令}' 文件   ,{}表达式语句块
        (2) 前置命令 | awk [选项] '条件{指令}'  文件
    3.选项
        -F:指定分隔符,(省略默认为空格或者Tab位)
        -F"[:/]":指定多个分隔符号
    4.awk行列与正则的组合:正则前面有其它操作
        (1)~:正则匹配操作符
        awk -F: '$1~/root/{print}' a.txt:这里的~表示连接正则
    5.awk过滤时机语法:
        awk 'BEGIN{}: BEGIN{}:读文件之前执行
                           {}: 逐行读取文件执行
                   END{}' :END{}读文件之后执行
                      a.txt 
    6.awk内置变量
        (1)FS:与-F一样
        (2)$0:当前读入的整行内容
        (3)$num:第num列内容,如$1,$3分别表示第1列与第3列
        (4)NF:当前行的总列数,awk '{print $NF}' b打印最后一列
        (5)NR:当前的行数
    7.awk条件设置
        (1) ==, !+, >, <, >=, >=
        (2)&&, ||
        (3)+, -, *, %, /, ++, --...
        例子:awk 'NF==2{print}' a.txt :打印第二行
    8.awk数组
        1.定义: 数组名[下标]=元素值
        2.
        2.遍历数组
            awk 'BEGIN{a[0]=11;a[2]=33;for(i in a) {print i,a[i]}}'
        3.统计某一个ip出现次数:
            awk '{IP[$1]++}END{for(i in IP)print i"访问次数为:"IP[i]}' ip.txt
  • 一.正则表达式
    • 1.egrep过滤工具(输出匹配行):筛选出文本中指定条件的行
      • (1)以行为单位,逐行进行处理,默认只"输出"与表达式相匹配的"文本行"
        • egrep:扩展正则
        • grep:基本正则
      • (2)语法
        • 格式1,文件(单引号)
          • egrep [选项] '正则' 文件
        • 格式2,命令
          • 命令 | egrep [选项] '正则'
      • (3)[选项]:
        • (1)-i:忽略大小写
        • (2)-v:去反
        • (3)-c:统计匹配的行数
        • (4)-q:无任何输出,一般用于检测命令是否执行成功
        • (5)-n:显示出匹配结果所在行号
        • (6)--color:标红显示匹配字符串
    • 2.符号匹配规则
      • 1.整体和或者匹配
        • (1)(ab):匹配包含(ab)的行
        • (2)| : root | bin :匹配root或者bin
      • 2.行首尾及单字匹配
        • (1)^:匹配以什么开头(^abc:以abc开头的行)
        • (2)$:匹配以什么结尾(abc$:以abc结尾的行)
        • (3).:匹配任意单个字符
      • 3.未定匹配次数
        • (1)+:至少匹配1次( (ab)+:一个或者多个连续的ab)
        • (2)?:最多匹配1次(a?:0个或1个a)
        • (3)*:代表次数,匹配前一个字符的0或任意次数(不可单独使用)
      • 4.{}限定次数匹配
        • (1)(){n}:匹配n次( (ab){2}:匹配abab)
        • (2)(){n,m}:匹配n-m次数 ( (ab){1,2}:匹配ab,abab)
        • (3)(){n,}:至少匹配n次( (ab){2,}:匹配abab及以上的连续)
      • 5.[]范围内单字匹配:[]内可加^取反[^]
        • (1)[a3?]:匹配a,3,?的行 == .
        • (2)[a-z]:匹配任意小写字母的行
        • (3)[A-Z]:匹配任意大写字母的行
        • (4)[0-9]:匹配任意数字的行
        • (5)[a-Z0-9]:匹配任意数字或者字母的行
        • (6)[^A-Z]:匹配包括非大写字母的行
        • (7)^[^a-z]:匹配非小写字母开头的行
      • 6.转义字符的边界匹配
        • (1)\b:单词边界,\broot\b,严格匹配root
        • (2)\<:单词开头,\<th,th开头的单词
        • (3)\>:单词结束,一般与\<结合使用,\<root\> 等同于 \broot\b
        • (4)\w:匹配数字,字母,下划线,所在行,
        • (5)\s:匹配空白所在行,
        • (6)\d:匹配[0-9]的数字=[0-9],用法:grep -P '\d' user
  • 二.sed工具
    • 1.作用:
      • 非交互式对文本进行增,删,改,查等操作,
      • 逐行处理,将结果输出到屏幕
      • 每个指令之间用//分隔:sed -rn "/^(root)|^(bin)/p" user
    • 2.语法:
      • 格式1:(单引号)
        • sed [选项] '/条件/和指令' 文件 (条件为行号或者/正则/(扩展正则加上-r),指令为参数)
      • 格式2
        • 命令 | sed [选项] '条件和指令'
    • 3.选项
      • (1)-n:屏蔽输出,不加默认输出全部原文内容
      • (2)-r:启用扩展的正则表达式,不写支持基本
      • (3)-i:修改原文件内容,不加的时候所有操作只输出效果,不改原文件
    • 4.指令
      • (1)p:(查)打印行,2,4p:打印2,3,4行,2p;4p:打印2行4行 sed -rn "/1/p" user
      • (2)d:(删)删除行,(!d删除不包含什么的行),2,4d:删除2,3,4行
      • (3)s:(改)替换,不加-n内容全部输出逐行替换
        • :/,可以使用#,&等,便于修改文件路径
        • s/a/b/4:将每行的第4个a字符替换为b字符(省略数字表示每行第一个)
        • s#lod#new#g:将每行所有old替换为new (改全文)
        • m,ns/原数据/新数据/g:指定行数替换所有匹配的内容
      • (4)sed文本块处理:增
        • (1)i:行前面插入文本,2ixx:在第2行前添加文本xx
        • (2)a:行后插入文本,2axx:在第2行后添加文本xx
        • (3)c:替换当前行,2cxx:将第二行的内容替换为xx
      • sed与正则结合例子:
        • sed -rn '/xx/s/2017/2002/g a.txt:找含有xx的行,将里面的所有2017替换成2002
    • 5.sed特殊用法
      • (1)sed -n '1!p' 文件名: 输出除了第一行的内容,!表示取反
      • (2)sed -n '$p' xx :输出最后一行
      • (3)sed -n '=' xx :输出行号,$=:输出最后一行的行号
      • (4)sed -n '1~2p' xx :打印奇数行,1为基准,~2,起跳2行
  • 三.awk
    • 1.作用
      • 将满足条件的行和列内容输出
    • 2.语法
      • (1) awk [选项] '条件{指令}' 文件 ,{}表达式语句块
      • (2) 前置命令 | awk [选项] '条件{指令}' 文件
    • 3.选项
      • -F:指定分隔符,(省略默认为空格或者Tab位)
      • -F"[:/]":指定多个分隔符号
    • 4.awk行列与正则的组合:正则前面有其它操作
      • (1)~:正则匹配操作符
      • awk -F: '$1~/root/{print}' a.txt:这里的~表示连接正则
    • 5.awk过滤时机语法:
      • awk 'BEGIN{}: BEGIN{}:读文件之前执行
      • {}: 逐行读取文件执行
      • END{}' :END{}读文件之后执行
      • a.txt
    • 6.awk内置变量
      • (1)FS:与-F一样
      • (2)$0:当前读入的整行内容
      • (3)$num:第num列内容,如$1,$3分别表示第1列与第3列
      • (4)NF:当前行的总列数,awk '{print $NF}' b打印最后一列
      • (5)NR:当前的行数
    • 7.awk条件设置
      • (1) ==, !+, >, <, >=, >=
      • (2)&&, ||
      • (3)+, -, *, %, /, ++, --...
      • 例子:awk 'NF==2{print}' a.txt :打印第二行
    • 8.awk数组
      • 1.定义: 数组名[下标]=元素值
      • 2.
      • 2.遍历数组
        • awk 'BEGIN{a[0]=11;a[2]=33;for(i in a) {print i,a[i]}}'
      • 3.统计某一个ip出现次数:
        • awk '{IP[$1]++}END{for(i in IP)print i"访问次数为:"IP[i]}' ip.txt

原文地址:https://blog.csdn.net/qq_50655286/article/details/143612913

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!