zoukankan      html  css  js  c++  java
  • linux基础学习-18.5-awk进阶

    1、awk模式与动作

    接下来就详细介绍下,awk的模式都有几种:

    • 正则表达式作为模式
    • 比较表达式作为模式
    • 范围模式
    • 特殊模式BEGIN和END

    awk的模式是你玩好awk的必备也是最基础的内容,必须熟练掌握

    2、正则表达式作为模式

    awk同sed一样也可以通过模式匹配来对输入的文本进行匹配处理。说到模式匹配,肯定少不了正则表达式,awk也支持大量的正则表达式模式,大部分与sed支持的元字符类似,而且正则表达式是玩转三剑客的必备工具,下表列出了awk支持的正则表达式元字符:

    awk默认就支持的元字符:

    awk默认不支持的元字符:(参数--posix)

    提示:

    • 加括号代表整体匹配,不加那么就匹配前边的一个字符。awk默认不支持这种形式的正则,需要加--posix参数或者--re-interval
    • 正则表达式的运用,默认是在行内查找匹配的字符串,若有匹配则执行action操作,但是有时候仅需要固定的列来匹配指定的正则表达式,比如:我想取/etc/passwd文件中第五列{$5}这一列查找匹配mail字符串的行,这样就需要用另外两个匹配操作符,并且awk里面只有这两个操作符来匹配正则表达式。

    1)awk正则匹配操作符

    awk正则匹配操作符:
    ||用于对记录或区域的表达式进行匹配|
    |--|--|
    |!
    |用于表达与~相反的意思|

    下面还是通过具体示例来看看,awk如何来通过正则表达式匹配字符串的

    2)awk正则表达式匹配整行

    [root@oldboy files]# awk -F ":" '/^root/' awkfile.txt 
    root:x:0:0:root:/root:/bin/bash
    

    和下面的效果是一样的

    [root@oldboy files]# awk -F ":" '$0~/^root/' awkfile.txt 
    root:x:0:0:root:/root:/bin/bash
    

    提示:

    awk只用正则表达式的时候是默认匹配整行的即‘$0~/^root/’和‘/^root/’是一样的

    3)awk正则表达式匹配一行中的某一列

    [root@oldboy files]# awk -F ":" '$5~/shutdown/' awkfile.txt 
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    

    提示:

    • $5表示第五个区域(列)
    • ~表示匹配(正则表达式匹配)
    • /shutdown/表示匹配shutdown这个字符串
    合并在一起

    $5~/shutdown/表示第五个区域(列)匹配正则表达式/shutdown/,既第5列包含shutdown这个字符串,则显示这一行。

    4)某个区域中的开头和结尾

    知道了如何使用正则表达式匹配操作符之后,我们来看看awk正则与grep和sed不同的地方。

    awk正则表达式
    |^|匹配一个字符串的开头|
    |--|--|
    |$|匹配一个字符串的结尾|

    在sed和grep这两个命令中,我们都把它们当作行的开头和结尾。但是在awk中他表示的是字符串的开头和结尾。

    练习题:

    1、写出awk默认就支持的元字符

    2、awk正则表达式匹配一行中的某一列

  • 相关阅读:
    Android周学习Step By Step(6)Android的数据库SQLite
    Android周学习Step By Step(2)HelloWorld
    解决方案(.sln)文件
    浅谈测试(1)单元测试
    批量上传功能的实现
    分页控件AspNetPager的用法
    .net下验证码的简单实现
    window.alert重写实现友好的对话框(支持IE)
    网页上自定义运行和测试HTML脚本
    数据库行转列的sql语句(zt)
  • 原文地址:https://www.cnblogs.com/Klanti/p/9143682.html
Copyright © 2011-2022 走看看