概述
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 ~
扩展:AWK 中级篇。