资讯专栏INFORMATION COLUMN

AWK 初级篇

davidac / 3069人阅读

摘要:概述是一种解释执行的编程语言。的名称是由它们设计者的名字缩写而来与。使用命令可以判断你当前的系统上是否安装了。打印出第一列,打印出最后一列。打印出指定行的指定列。以任意顺序输出列。正则表达式匹配行结束。

概述

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 "	" $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


推荐阅读

系统的讲解 - SSO 单点登录

系统的讲解 - PHP WEB 安全防御

系统的讲解 - PHP 缓存技术

系统的讲解 - PHP 接口签名验证

系统的讲解 - PHP 浮点数高精度运算

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30416.html

相关文章

  • shell在手分析服务器日志不愁?

    摘要:自己的小网站跑在阿里云的上面偶尔也去分析分析自己网站服务器日志看看网站的访问量。然后统计最终返回的数字就是当前所有端口的已建立连接的总数。 自己的小网站跑在阿里云的ECS上面,偶尔也去分析分析自己网站服务器日志,看看网站的访问量。看看有没有黑阔搞破坏!于是收集,整理一些服务器日志分析命令,大家可以试试! 1、查看有多少个IP访问: awk {print $1} log_file|sor...

    fyber 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<