• 十七. 正则以及grep ,sed,awk的简单应用


    一.正则表达式:/ /
    grep,sed,awk 都能解释正则表达式


    正则表达式:把一些特殊符号组合到一起描述字符和字符串的方法。
    ^ 以什么开头 grep '^root' /etc/passwd
    $ 以什么结尾 如能登入系统的所有用 grep ‘bash$’/etc/passwd
    . 任意一个字符 grep '^b.n' /etc/passwd 过滤取到bin的
    .* 所有字符
    * 代表前面的字符有0个或者无穷个 grep 'b*' /
    + 必须用egrep 或 egrep -E ‘ab+’表示前面的字符有一个或者无穷个
    {}  'ab{n}’前面的字符有n个  控制前面字符个数{3} 前面字符的个数为3
    ? ‘ab?’前面字符出现0次或1次 前面的字符为b 不是ab
    []  [yan] 只取里面的一个y[asdd]n  yan ysn ydn yasn 可以取到yan ysn ydn
    [^]中括号里面的取反
    ^[^] 非字符组的字符开头的行
    [a-z]所有的小写字母
    [A-Z]所有的大写字母
    [a-zA-Z]所得大小写字母
    [123-]去123其中的一个或 ‘-'
    -必须放在后面
    二.grep
    grep 命令:
    grep -n 显示匹配所在行
    -q  静默模式
    -l  打印文件名
    -A n 打印后几行
    -B n 打印前几行
    -C n 前几行和后几行
    -o 只显示匹配的内容
    -c 匹配成功的行数
    -E ==egrep
    -i 忽略大小写,全部抓取
    -v 取反抓取,过滤  不匹配这几行,过滤到其他
    -w 过滤单词全部的内容

    三.sed 流编辑器
    sed包括两部分  第一部分为定位到行,其次是正则定位
    sed -r '定位+操作'
    -n  静默模式  默认的输出不打印出来
    -e  可以指定多个规则
    -i  将内容写到文件里面并且打印出来
    -f  将内容写到指定文件里
    命令:
    d=del 删除 sed '2d' 文件名  删除文件的第二行并打印出来,源文件不修改
    p=print 打印 sed'2p' 打印第二行
    c=change 修改 sed'2c 111111' 将第二行改成111111
    a=append 追加 sed'2a 11111 ' 在第二行后面追加11111
    i=inset 插入 sed '2i 11111'在第二行前一行插入11111
    s=substation 替换 sed 's/a/b/g’ 把所有的a换成b   g代表这行当中所有都改,不加只改第一个a
    sed 正则定位
    sed '/正则表达式/命令’目标文件
    sed ' ; ' 目标文件  两个命令一起执行
    sed -r 's///' s命令修改部分内容

    四.awk

    awk 可以处理格式明显的文本
    awk -F  指定分隔符
    如:
    --awk -F: ‘{print $n}’/ect/passwd 取用户配置文件的:前面的n个并打印出来
    --awk -F: ‘{print $n,NF}’/ect/passwd 取用户配置文件的:前面的n个并打印出来 并且打印出有几段
    --awk -F: ‘{print $n,$NF}’/ect/passwd 取用户配置文件的第n段和最后一段并且显示出来
    --awk -F: ‘{print $n,NR}’/ect/passwd 取用户配置文件的第n段并且显示行号
    &0 取所有   NF 代表以:为分隔符的有几段   NR表示显示行号:
    NR==1 表示定位
    --awk -F: ‘NR==1{print $n}’/etc/passwd 取用户配置文件的第一行的第N段
    --awk -F: 'NR<=3{print NR,"aaaaaa",$1,NF}' /etc/passwd 取用户配置文件的前三行的第一段,并且显示行号,行内以:分割的有几段
    --awk -F: '3<=NR&&NR<=5{print NR,"aaaaaa",$0,NF}' /etc/passwd 用户配置文件的3-5行的
    --awk -F: 'NR<=2||NR>=5{print NR,"aaaaaa",$0,NF}' /etc/passwd 用户配置信息的第二行之前的,第7行之后的
    --awk -F: '/nologin$/{print $1}' /etc/passwd
    --awk -F: '$1~/^r.*t$/{print $3,$1}' /etc/passwd 取用户配置文件的第一段的以r开头t结尾的第3段和第一段
    --{     count=n   定义一个变量
     awk -v x=$count -F: ‘$3 >= x{print $1}’/etc/passwd
      } 取用户配置信息的UID>n的第一段并且打印出来 


    其他常用命令的补充:
    --cat a.txt |sort |uniq 排序并且去重a.txt的文件内容
    --cut命令  cat a.txt |cut -d: -f1,3 取a.txt 以:为分隔符的第一段和第三段
    --find命令 find / -type f
                      -name "* .txt" 根目录下以txt文件为结尾的文件
                      -size +30M  大于30M的文件
                      -size +10M -size -30M 大于10M小于30M的文件

  • 相关阅读:
    ASP.NET的票据工具类FormsAuthenticationTicket
    FormsAuthenticationTicket学习笔记
    FormsAuthentication与Session超时时间不一的解决方法
    asp.net mvc 从数据库中读取图片的实现代码
    ASP.NET下载远程图片保存到本地的方法、保存抓取远程图片
    获取客户端的IP地址
    C#实现DNS解析服务
    Linux下安装Nginx详细图解教程
    手动配置Ubuntu Linux系列3-缺省网关和主机名
    web运维第一篇:nginx配置文件详解笔记
  • 原文地址:https://www.cnblogs.com/njzy-yuan/p/6869856.html
Copyright © 2020-2023  润新知