现在的位置: 首页 > 综合 > 正文

AWK简明教程

2013年10月13日 ⁄ 综合 ⁄ 共 2144字 ⁄ 字号 评论关闭

AWK 简明教程

2013年2月17日发表评论阅读评论15,863
人阅读    

有一些网友看了前两天的《Linux下应该知道的技巧》希望我能教教他们用awk和sed,所以,出现了这篇文章。我估计这些80后的年轻朋友可能对awk/sed这类上古神器有点陌生了,所以需要我这个老家伙来炒炒冷饭。况且,AWK是贝尔实验室1977年搞出来的文本出现神器,今年是蛇年,是AWK的本命年,而且年纪和我相仿,所以非常有必要为他写篇文章

之所以叫AWK是因为其取了三位创始人 Alfred AhoPeter
Weinberger
, 和 Brian Kernighan 的Family Name的首字符。要学AWK,就得提一提AWK的一本相当经典的书《The
AWK Programming Language
》,它在豆瓣上的评分是9.4分!在亚马逊上居然卖1022.30元

我在这里的教程并不想面面俱到,本文和我之前的Go语言简介一样,全是示例,基本无废话。

我只想达到两个目的:

1)你可以在乘坐公交地铁上下班,或是在坐马桶拉大便时读完(保证是一泡大便的工夫)。

2)我只想让这篇博文像一个火辣的脱衣舞女挑起你的兴趣,然后还要你自己去下工夫去撸。

废话少说,我们开始脱吧(注:这里只是topless)。

起步上台

我从netstat命令中提取了如下信息作为用例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$
cat

netstat
.txt
Proto
Recv-Q Send-Q Local-Address          Foreign-Address             State
tcp       
0      0 0.0.0.0:3306           0.0.0.0:*                   LISTEN
tcp       
0      0 0.0.0.0:80             0.0.0.0:*                   LISTEN
tcp       
0      0 127.0.0.1:9000         0.0.0.0:*                   LISTEN
tcp       
0      0 coolshell.cn:80        124.205.5.146:18245         TIME_WAIT
tcp       
0      0 coolshell.cn:80        61.140.101.185:37538        FIN_WAIT2
tcp       
0      0 coolshell.cn:80        110.194.134.189:1032        ESTABLISHED
tcp       
0      0 coolshell.cn:80        123.169.124.111:49809       ESTABLISHED
tcp       
0      0 coolshell.cn:80        116.234.127.77:11502        FIN_WAIT2
tcp       
0      0 coolshell.cn:80        123.169.124.111:49829       ESTABLISHED
tcp       
0      0 coolshell.cn:80        183.60.215.36:36970         TIME_WAIT
tcp       
0   4166 coolshell.cn:80        61.148.242.38:30901         ESTABLISHED
tcp       
0      1 coolshell.cn:80        124.152.181.209:26825       FIN_WAIT1
tcp       
0      0 coolshell.cn:80        110.194.134.189:4796        ESTABLISHED
tcp       
0      0 coolshell.cn:80        183.60.212.163:51082        TIME_WAIT
tcp       
0      1 coolshell.cn:80        208.115.113.92:50601        LAST_ACK
tcp       
0      0 coolshell.cn:80        123.169.124.111:49840       ESTABLISHED
tcp       
0      0 coolshell.cn:80        117.136.20.85:50025         FIN_WAIT2
tcp       
0      0 :::22                  :::*                        LISTEN

下面是最简单最常用的awk示例,其输出第1列和第4例,

  • 其中单引号中的被大括号括着的就是awk的语句,注意,其只能被单引号包含。
  • 其中的$1..$n表示第几例。注:$0表示整个行。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$

抱歉!评论已关闭.