AWK 初级篇

概述


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 ~


0?wx_fmt=jpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值