Shell 正则表达式

  1. 基础正则表达式

    元字符作用
    *前一个字符匹配0次或任意多次
    .匹配除换行符以外的任意一个字符
    ^匹配行首。取反
    $匹配行尾
    []匹配中括号中制定的任意一个字符。例如:[0-9]匹配任意一个数字。[a-z]匹配任意一个小写字母
    [^]匹配除中括号字符以外的任意一个字符。例如:[^a-z]匹配任意一位非小写字母
    \转义符。例如:grep "\.$" test.txt 匹配以.结尾的行
    \{n\}表示其前面的字符恰好出现n次。例如:[0-9]\{4\}匹配4位的数字。1[3-8][0-9]\{9\}匹配手机号码
    \{n,\}表示其前面的字符出现不小于n次。例如:[0-9]\{2,\}匹配至少出现2位及以上的数字
    \{n,m\}表示其前面的字符至少出现n次,最多出现m次。例如:[a-z]\{4,6\}匹配4位到6位的小写字母

     

  2. 例子
    grep "a*" test.txt 注意:它匹配出现0次或任意多次的a,会输出所有内容
    grep "aa*" test.txt 匹配至少包含一个a的行
    grep "s..d" text.txt 匹配在s和d之间有2个字符的行
    grep "s.*d" text.txt 匹配s和d之间有任意字符
    grep ".*" text.txt 匹配所有内容
    grep -n "^$" text.txt 匹配空行并输出行号
    grep "^[a-z]" 匹配以小写字母开头的行
    grep "^[^a-zA-Z]" 匹配不以字母开头的行
    匹配到abc的域名,自动添加1行xyz的域名
    sed -r 's/(^.*)abc.com/&\n\1xyz.com/' /etc/hosts 
    找出包含xxx的行,并将其中的aaa替换为fff
    sed -i '/xxx/s/aaa/fff/g' file
    将data目录a.test.com b.test.com,批量修改成a.geeker.com b.geeker.com
    for file in `ls /data/|grep test`;do echo $file `echo $file |sed "s#test#geeker#g"` ;done

    向后查找:
    echo "string123" | grep -Po '(?<=string)\d+'
    向前查找:
    echo "123string" | grep -Po '\d+(?=string)'
    前后匹配
    echo "Here is a string" | grep -oP '(?<=Here).*(?=string)'
    删除空格换行
     tr -d '[[:space:]]'
    指定行插入
    sed -i 'N;/BOMBKing_KILL_CHEAT/a \ <Test_value value="true"/>' config.xml
    sed -i 'N;/BOMBKing_KILL_CHEAT/a \ <!-- 这是一行测试 -->' config.xml
    指定日志前后查看
    grep -A8 "string"  config.xml
    grep -B8 "string"  config.xml
    grep -b8 "string"  config.xml

转载于:https://www.cnblogs.com/Mrhuangrui/p/4570421.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值