zoukankan      html  css  js  c++  java
  • 【CentOS】正则表达式

    1.grep  [-cinvABC]  'word'  filename

      -c :打印符合要求的行数

      --color:显示颜色

      -i :忽略大小写(ignore)

      -n :在输出符合要求的行的同时连同行号一起输出(number)

      -v :打印不符合要求的行(取反)

      -A :后跟一个数字(有无空格都可以),例如 –A2则表示打印符合要求的行以及下面两行(after)

      -B :后跟一个数字,例如 –B2 则表示打印符合要求的行以及上面两行(before)

      -C :后跟一个数字,例如 –C2 则表示打印符合要求的行以及上下各两行 

      -E  :允许使用拓展正则表达式(extended regular  expression)

      -r  :遍历

      注意:"." 表示任意一个字符                       eg: grep -E 'ro.t' 1.txt= egrep 'ro.t' 1.txt,可以过滤出root

              ".*"表示零个或多个任意字符,           eg: grep -E 'ro.*t' 1.txt= egrep 'ro.*t' 1.txt,可以过滤出rot,rosadat,roo...t 

              "?"表示零个或一个跟在他前面的字符, eg: grep -E 'ro?t' 1.txt = egrep 'ro?t' 1.txt ,"o?"可以过滤出rt,rot        (这时你想到.*是什么意思了吗,手动滑稽)

              "+"表示一个或多个根子他前面的字符, eg: grep -E 'ro+t' 1.txt = egrep 'ro+t' 1.txt ,"o+"可以过滤rot,root,rooo...t

              也可以这样用:...(oo+) 1.txt  ;         ...(oo){1,2} 1.txt,{}内为数字,表示重复次数

              [^a]:[]括号内的^表示除了..也就是取反、非的意思

    2.sed      (查找替换)

     查找:

     sed -n 'np' 1.txt    列出第几行

          -n  :取消默认输出

          np  :n为第几行,列出多行可以'1,10p',表示为列出1-10行,'5-$'列出第五行到行尾

      sed -n '/root/p' 1.txt   列出包含root的行

     多行为

      sed -n -e '/root/p'  -e 'np'  1.txt  

          -e  :实现多个行为

     删除

      sed '1,5d'  删除1-5行

     替换

      sed 's///g'  替换(这个类似vim), eg: sed -r '5,$s#([^:]+)(:.*+:)([^:]+$)#321#' 1.txt,表示为替换第五行到最后一行每一行的首尾单词

          -r  :允许使用拓展正则表达式(extended regular  expression)

      注意:由于符号在涉及到路径时,很容易混淆,因此可以用#,@来替代

    3.awk

      截取:

        awk -F':' '{print $1,$2}' 1.txt

        -F :指定分隔符,如果不使用则默认为空格和Tab制表符。注意!!-F后面的''一定要紧贴着的!!

        print 为打印的动作,打印出某个字段,$1为第一个字段,$2为第二个,$0为整行

      匹配字符或字符串:

        匹配~:

          awk -F':' '$1~/oo/' 1.txt ,表示为让$1段去匹配

          awk -F':' '/root/ {print $1,$3} /test/ {print $1,$3}' 1.txt,表示为多次匹配,匹配完root后再匹配test(还不怎么熟悉的)

      条件运算符:

        可以使用>,<,>=,<=,==,!=,&&,||

        awk -F':' '$3=="0"' 1.txt ,表示为打印出第三个字段为"0"字符的行,若果是'$3==0',才是数字,否则会像sort的排序原理一样

        awk -F':' '$3!="/bin/bash"' 1.txt,表示为打印出第三个字段不为/bin/bash的行。

        awk -F':' '$3<$4' && '$3<=7' 1.txt,表示为打印出第三个字段小于第四个字段并且第三个字段小于7的行

      内置变量:

        awk常用的变量有:

          NF:用分隔符分隔后一共有多少段

          NR:行数

          因此,$NF为最后一段的值,NR为行号,NF、NR可作为判断的条件,如:'$NF>=10' ,最后一段的值大于等于10

        总和???????不懂,日后补充吧

  • 相关阅读:
    Python函数语法里的中括号和逗号是什么意思
    关于mysql配置文件中jdbc url 的记录
    MySQL 优化慢查询
    Windows10 解决端口占用问题
    数据结构与算法分析-表,栈,队列
    MySQL手动执行rollback,内部实现分析
    Docker 之 RabbitMQ安装教程 基于腾讯云
    Docker容器启动报WARNING: IPv4 forwarding is disabled. Networking will not work
    List按需转换Map
    位移运算符 1<<4
  • 原文地址:https://www.cnblogs.com/ImJerryChan/p/6036535.html
Copyright © 2011-2022 走看看