Linux正则/三剑客grep ,sed ,awk

核心通配符:

*        匹配任意长度的任意文字        a*b  a与b之间可以有任意长度的任意字符,也可以没有。

?        匹配任意单个字符        a ?b  a与b之间必须也只能有一个字符,可以是任意字符

[ ]        匹配指定范围内的任意单个字符        [a-z] , [A-Z] , [0-9] ,[a-z0-9] 

                                                                        [[:upper:]]  所有大写字母

                                                                        [[:lower:]]  所有小写字母

                                                                        [[:alpha:]]  所有字母

                                                                        [[:digit:]]  所有数字

                                                                        [[:alnum:]]  所有的字母和数字

                                                                        [[:space:]]   所有空白字符

                                                                        [[:punct:]]  所有标点符号

[ ^ ]  匹配指定范围外的任意单个字符            [^[:upper:]]    [^[:alnum:]]    [^0-9]

例:ls  -d   /etc/[0-9]*[^0-9] : 显示/etc目录下 ,以任意一位数字开头,且以非数字结尾的文件或目录

正则表达式:

字符匹配        .        匹配任意单个字符

                      [ ]        匹配指定范围内的任意单个字符

                      [ ]        匹配指定范围外的任意单个字符

匹配次数        *        匹配其前面的字符任意次;

                       .*        匹配任意长度的任意字符

                        \?        匹配其前面的字符0次或1次,即其前面的字符可有可无;

                        +        匹配其前面的字符1次或多次;即其面的字符要出现至少1次;

                        \{m\}        匹配其前面的字符m次

                        \{m,n\}        匹配其前面的字符至少m次,至多n次,

                        \{0,n\}        至多n次

                        \{m,\}        至少m次

位置锚定        ^                行首锚定;用于模式的最左侧!

                       $                行尾锚定;用于模式的最左侧!

                       ^pattern$        用于pattern来匹配整行

                        ^$                     匹配空白行

                        ^[[:space:]]*$        空行或包含空白字符的行

                        \< 或 \b                   词首锚定,用于单词模式的左侧

                         \>或\b                     词尾谋定,用于单词模式的右侧

分组及引用         \(\)                         将一个或多个字符捆绑在一起,当作一个整体进行处理

                          \(\)ab\1                 模式从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符

                            (\)ab\2                模式从左侧起,第二个左括号以及与之匹配的右括号之间的模式所匹配到的字符

                              (\)ab\3                ………………

Linux文本处理三剑客之grep

  • -i           忽略字符的大小写
  • -o          仅显示匹配到的字符串本身
  • -v           显示不能被模式匹配到的行
  • -E           支持使用扩展的正则表达式
  • -q            不输出任何信息 

        例:显示/etc/passwd文件中不以/bin/bash结尾的行

                frep -v   "/bin/bash$"     /etc/passwd

                找出/etc/passwd文件中的两位数或三位数;

                grep "\<[0-9]\{2,3\}\>" /etc/passwd

Linux文本处理之sed

  • -n : 不输出模式空间中的内容至屏幕;
  • -e : 多点编辑;
  • -f :每行一个编辑命令;
  • -r :支持使用扩展正则表达;
  • -i :直接编辑源文件;

编辑命令: d :删除

  • p : 显示模式空间中的内容
  • w :保存模式空间匹配到的行至指定的文件中;
  • r :读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并;
  • s///:查找替换,其分隔符可自行指定,常用的有s@@@, s###等;
  • 替换标记:
  • g:全局替换;
    w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
    p:显示替换成功的行;

例:sed '/north/p' sed.txt        !sed 把所有输入行都打印在标准输出上。如果在某一行匹配到 north, sed就把该行另外打印一遍。

        sed -n '/north/p' sed.txt           !-n,只打印处理过的

        删除:sed '3d' sed.txt

        替换 : sed 's/south/north/g' sed.txt  (g是全局替换)

linux文本处理之awk:

  • -F : 定义输入字段分割符;默认是空格或制表符;
  • 命令格式:awk -F: '/root/'  /etc/passwd
    •             awk -F: '{print $1}'   /etc/passwd

ip a | grep 'inet ' | sed -n '2p' | awk -F'/' '{print $1}' | awk -F' ' '{print $2}'
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值