AWK 初级篇

作者: 新亮笔记 | 来源:发表于2016-09-05 12:15 被阅读68次

    概述

    AWK 是一种解释执行的编程语言。
    它非常的强大,被设计用来专门处理文本数据。
    AWK 的名称是由它们设计者的名字缩写而来 —— Afred Aho, Peter Weinberger 与 Brian Kernighan。

    部分 AWK 的典型应用场景

    AWK 可以做非常多的工作。 下面只是其中的一小部分:

    • 文本处理

    • 生成格式化的文本报告

    • 进行算术运算

    • 字符串操作,以及其它更多

    安装

    默认Linux系统中是安装 AWK 的。
    使用 which 命令可以判断你当前的系统上是否安装了 AWK。

    如果没有安装,可以使用 yum 包管理工具安装:

    yum install gawk
    

    which 命令确认 AWK 已成安装成功:

    which awk
    

    如果得到如下的结果,则说明你已经成功安装 awk:

    /bin/awk
    

    实战

    带着问题来学习,本次解决解决下这些问题。

    • 打印出文件的内容。

    • 打印出第一列,打印出最后一列。

    • 打印出第一行,打印出最后一行。

    • 打印出指定行的指定列。

    • 以任意顺序输出列。

    • 正则表达式 匹配行开始。

    • 正则表达式 匹配行结束。

    测试文本 score.txt

    Aaron    Physics    87
    Abel     Maths      98
    Rahul    Chinese    90
    Buck     Biology    87
    Byron    English    85
    Dave     History    89
    Enoch    Chemistry  89
    
    
    //打印出文件的内容。
    [root@vagrant-centos65 awk]# awk '{print $0}' score.txt
    Aaron    Physics    87
    Abel     Maths      98
    Rahul    Chinese    90
    Buck     Biology    87
    Byron    English    85
    Dave     History    89
    Enoch    Chemistry  89
    
    
    //打印出第一列。
    [root@vagrant-centos65 awk]# awk '{print $1}' score.txt
    Aaron
    Abel
    Rahul
    Buck
    Byron
    Dave
    Enoch
    
    
    //打印出最后一列。
    [root@vagrant-centos65 awk]# awk '{print $NF}' score.txt
    87
    98
    90
    87
    85
    89
    89
    
    //打印出第一行。
    [root@vagrant-centos65 awk]# awk 'NR==1{print $0}' score.txt
    Aaron    Physics    87
    
    //打印出最后一行。
    [root@vagrant-centos65 awk]# awk 'END{print}' score.txt
    Enoch    Chemistry  89
    
    //打印出指定行的指定列。比如 第四行第二列
    [root@vagrant-centos65 awk]# awk 'NR==4{print $2}' score.txt
    Biology
    
    //通过匹配模式串输出列。
    [root@vagrant-centos65 awk]# awk '/b/{print $0}' score.txt
    Abel     Maths      98
    
    //以任意顺序输出列。
    [root@vagrant-centos65 awk]# awk '{print $2 "\t" $1}' score.txt
    Physics Aaron
    Maths Abel
    Chinese Rahul
    Biology Buck
    English Byron
    History Dave
    Chemistry Enoch
    
    //行开头匹配。
    [root@vagrant-centos65 awk]# awk '/^A/' score.txt
    Aaron    Physics    87
    Abel     Maths      98
    
    [root@vagrant-centos65 awk]# awk '/^B/' score.txt
    Buck     Biology    87
    Byron    English    85
    
    //行结束匹配。
    [root@vagrant-centos65 awk]# awk '/89$/' score.txt
    Dave     History    89
    Enoch    Chemistry  89
    

    Thanks ~

    PHP工程师

    相关文章

      网友评论

        本文标题:AWK 初级篇

        本文链接:https://www.haomeiwen.com/subject/ywsrettx.html