异曲同工的AWK语句,学习

输出每个IP的网络连接数,是作很多事情的第一步:

netstat -nat | awk ‘{print $5}‘ | cut -d: -f1 | sort | uniq -c | sort -n

netstat -nat|awk ‘{print $5}‘|awk -F : ‘{print $1}‘|awk ‘{a[$1]++}END{for(i in a)print a[i],i}‘|sort -n

再试试AWK文件功能:

awk -f cal.awk mawk.txt

awk脚本

在上面我们可以看到一个END关键字。END的意思是“处理完所有的行的标识”,即然说到了END就有必要介绍一下BEGIN,这两个关键字意味着执行前和执行后的意思,语法如下:

  • BEGIN{ 这里面放的是执行前的语句 }
  • END {这里面放的是处理完所有的行后要执行的语句 }
  • {这里面放的是处理每一行时要执行的语句}

为了说清楚这个事,我们来看看下面的示例:

假设有这么一个文件(学生成绩表):


1

2

3

4

5

6

$ cat score.txt

Marry   2143 78 84 77

Jack    2321 66 78 45

Tom     2122 48 77 71

Mike    2537 87 97 95

Bob     2415 40 57 62

我们的awk脚本如下(我没有写有命令行上是因为命令行上不易读,另外也在介绍另一种用法):


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

$ cat cal.awk

#!/bin/awk -f

#运行前

BEGIN {

    math = 0

    english = 0

    computer = 0

    printf "NAME    NO.   MATH  ENGLISH  COMPUTER   TOTAL\n"

    printf "---------------------------------------------\n"

}

#运行中

{

    math+=$3

    english+=$4

    computer+=$5

    printf "%-6s %-6s %4d %8d %8d %8d\n", $1, $2, $3,$4,$5, $3+$4+$5

}

#运行后

END {

    printf "---------------------------------------------\n"

    printf "  TOTAL:%10d %8d %8d \n", math, english, computer

    printf "AVERAGE:%10.2f %8.2f %8.2f\n", math/NR, english/NR, computer/NR

}

我们来看一下执行结果:(也可以这样运行 ./cal.awk score.txt)


1

2

3

4

5

6

7

8

9

10

11

$ awk -f cal.awk score.txt

NAME    NO.   MATH  ENGLISH  COMPUTER   TOTAL

---------------------------------------------

Marry  2143     78       84       77      239

Jack   2321     66       78       45      189

Tom    2122     48       77       71      196

Mike   2537     87       97       95      279

Bob    2415     40       57       62      159

---------------------------------------------

  TOTAL:       319      393      350

AVERAGE:     63.80    78.60    70.00

时间: 2024-08-09 10:44:04

异曲同工的AWK语句,学习的相关文章

lua 语句学习

版本:1.0 日期:2014.5.17 2014.6.1 版权:© 2014 kince 转载注明出处 在介绍SwitchButton之前,先来看一下系统Button是如何实现的.源码如下: @RemoteView public class Button extends TextView { public Button(Context context) { this(context, null); } public Button(Context context, AttributeSet att

linux 下的 正则表达式(awk,sed,awk)学习

一.正则表达式: 正则表达式(或称Regular Expression,简称RE)就是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式. 该模式描述在查找文字主体时待匹配的一个或多个字符串. 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配.简单的说,正则表示式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为, 正则表示式通过一些特殊符号的辅助,可以让使用者轻易的达到搜寻/删除/取代某特定字符串的处理程序.vim.grep.find.awk.se

数据库语句学习

1.查询语句 (1)select 列名, 列名, ... from 表名 例:setect * from 表名 获取表格中所有内容 (2)select distinct 列名, 列名, ... from 表名 //获取某列唯一不同的值 (3)select 列名 from 表名 where 列 运算符 值 //值如果是文本格式,使用 ' ',运算符中不等于为 <> and 和 or 用在where 语句中,把多个条件集合起来 order by 列名 DESC/ASC //对结果集进行排序 DES

SQL 语句学习

Sql语句学习 一. select playerId, count(playerId) as num from OperateLog_$i where playerId > 0 and rootId = 12 and typeId = 12156 and actionTime >= 1381509000000 and actionTime <= 1381511220000 group by playerId having count(*) > 2; this-- > 可以计算

awk案例学习

awk是一个强大的文本分析工具,awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理.awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作. 使用方法 awk '{pattern+action} {filename}' pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令. 例子1:读取指定列的内容.(last -n:列出最近登陆系统的n个用户的信息) [

mysql学习之三:sql语句学习

SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统.SQL 语句用于取回和更新数据库中的数据.SQL 可与数据库程序协同工作,比如MySQL. MS Access.DB2.Informix.MS SQL Server.Oracle.Sybase 以及其他数据库系统. 不幸地是,存在着很多不同版本的 SQL 语言,但是为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如 SELECT.UPDATE.DELETE.INSERT.WHERE 等等).

mysql学习之四:sql语句学习2

创建数据库: CREATE DATABASE stefan; 删除数据库: DROP DATABASE stefan; 重命名数据库: 重命名数据库没有直接的办法. 已经不再使用的方法: RENAME DATABASE stefan TO LCDB; 创建表格语法: CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, .... )   查看一个表格结构: DESCRIBE Persons;     ALTER TABLE 语句用于在已有的表中添

mysql学习之五:sql语句学习3

好吧,大家觉得这种字体还是比较好看,所有我们就换这种字体了. INSERT INTO 语句用于向表格中插入新的行. 语法 INSERT INTO 表名称 VALUES (值1, 值2,....) 我们也可以指定所要插入数据的列: INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) Update 语句用于修改表中的数据. 语法: UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 DELETE 语句用于删除表中

Python 条件语句学习

Python 的条件语句学习 一.前置概念准备 代码块: 代码块指的是冒号后边一行缩进的代码内容.代码块默认是四个空格,可以用TAB键来进行缩进. 二.IF条件语句的基本形式: 1.基本if 语句 基本的if语句其实就是基本的: if 条件: 成立之行的代码 ------ else: 不成立之行的代码 ------ 2.嵌套的if 语句 嵌套的语句就是if里边挂if: if 条件: if条件2: 成立代码块 ------ else: 不成立代码块 ------- else: 不成立代码块 ---