单机文本数据处理,常用AWK,总结一下AWK最常用的要点,备忘备查。


1.What is AWK
(1)Aho、Weinberger、Kernighan三位发明者名字首字母;
(2)一个行文本处理工具;


2.How to use AWK
2.1 处理方式:逐行处理文件中的数据

2.2语法

 

awk 'pattern + {action}'

说明:
(1)单引号''是为了和shell命令区分开;
(2)大括号{}表示一个命令分组;
(3)pattern是一个过滤器,表示命中pattern的行才进行action处理;
(4)action是处理动作;
(5)使用#作注释;

例子:显示hello.txt中的第3行至第5行

 

cat hello.txt | awk 'NR==3, NR==5{print;}'

2.3pattern说明
pattern参数可以是egrep正则表达式中的一个,正则表达式使用/pattern/
例子:显示hello.txt中,正则匹配hello的行

 

cat hello.txt | awk '/hello/'

说明:
(1)pattern和action可以只有其一,但不能两者都没有;
(2)默认的action是print;
例子:显示hello.txt中,长度大于100的行号

 

cat hello.txt | awk 'length($0)>80{print NR}'


3.内置变量
FS 分隔符,默认是空格
NR 当前行数,从1开始
NF 当前记录字段个数
$0 当前记录
$1~$n 当前记录第n个字段
例子:显示hello.txt中的第3行至第5行的第一列与最后一列

 

cat hello.txt | awk 'NR==3, NR==5{print $1,$NF}'


4.内置函数
gsub(r,s):在$0中用s代替r
index(s,t):返回s中t的第一个位置
length(s):s的长度
match(s,r):s是否匹配r
split(s,a,fs):在fs上将s分成序列a
substr(s,p):返回s从p开始的子串


5.操作符
5.1运算符
类似于c,支持+、-、*、/、%、++、–、+=、-=等诸多操作;

5.2判断符
类似于c,支持==、!=、>、=>、~(匹配于)等诸多判断操作;


6.控制流程
6.1.BEGIN和END
BEGIN和END本质是一个pattern。
BEGIN用于awk程序开始开始前,做一些初始化的工作;
END用于awk程序结束前,做一些收尾的工作。
例子:统计字符个数

 

awk '

BEGIN

{

count=0;

}

{

count+=length($0);

}

END

{

print count;

}'

6.2流程控制语句
(1)if(condition){}else{}
(2)while{}
(3)do{}while(condition);
(4)for(init;condition;step){}
(5)break/continue:如果有END,会执行END中的收尾工作
个流程控制语句用法几乎与c相同。


7.awk与shell的交互
(1)awk中使用shell中定义的变量:使用单引号即可;

 

#!/bin/bash

STR="hello"

echo | awk '{

print "'${STR}'";

}'

(2)awk中使用shell命令:使用双引号,或者system命令;

 

#!/bin/bash

echo hello | awk '{

print $0 | "cat"

}'

或者

 

#!/bin/bash

echo | awk '{

system("date > date.txt")

}'

(3)awk中的变量传出至shell:用文件;
(4)getline:awk里,从文件中读取变量到awk中

#!/bin/bash

echo | awk '{

while(getline < "date.txt")

{

print $;

}

}'

8.举个栗子

netstat -n|awk '/^tcp/{++Array[$NF]} END {for(i in Array) print i,Array[i]}'

说明:

$NF是指的最后一列值,以该值做数组S索引,相同索引就累计

END 结束后

循环遍历打印一下 a,S[a]的关系

【AWK】:常用总结的更多相关文章

  1. AWK常用技巧

    1.1 介绍 awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK 的确拥有自己的语言: AWK ...

  2. shell编程系列20--文本处理三剑客之awk常用选项

    shell编程系列20--文本处理三剑客之awk常用选项 awk选项总结 选项 解释 -v 参数传递 -f 指定脚本文件 -F 指定分隔符 -V 查看awk的版本号 [root@localhost s ...

  3. awk 常用选项及数组的用法和模拟生产环境数据统计

    awk 常用选项总结 在 awk 中使用外部的环境变量 (-v) awk -v num2="$num1" -v var1="$var" 'BEGIN{print ...

  4. 【转】sed & awk常用正则表达式

    正则表达式元字符 正则表达式中有两种基本元素: 以字面值或变量表示的值(如.代表任意单个字符). 操作符(如*代表将前面的字符重复任意次). 元字符汇总 特殊字符 用途 . 匹配除换行符以外的任意单个 ...

  5. 【转】AWK常用

    awk是个优秀文本处理工具,可以说是一门程序设计语言.下面是awk内置变量. 一.内置变量表 属性 说明 $0 当前记录(作为单个变量) $1~$n 当前记录的第n个字段,字段间由FS分隔 FS 输入 ...

  6. centos7之sed和awk常用

    sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令 ...

  7. sed & awk常用正则表达式

    正则表达式元字符 正则表达式中有两种基本元素: 以字面值或变量表示的值(如.代表任意单个字符). 操作符(如*代表将前面的字符重复任意次). 元字符汇总 特殊字符 用途 . 匹配除换行符以外的任意单个 ...

  8. linux awk常用命令【转载】

    简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...

  9. awk常用命令

    1.统计TCP的连接数量,其中LISTEN多少个,ESTABLISHED多少个. [root@heiniao ~]# netstat -ant Active Internet connections ...

  10. awk --- 常用技巧

    一.每隔几行取出一个数,输出到另外一个文件 awk '{ if (NR % 9 ==1) {print NR, " => ", $0 } }' kp.txt > xy_ ...

随机推荐

  1. JavaScript的进阶篇

    一.Array对象.数组对象 1)创建数组对象 //Array 对象用于在单个的变量中存储多个值. //语法: //创建方式1: ,,]; //创建方式2: new Array(); // 创建数组时 ...

  2. sql创建备份表和复制数据到备份表

    1.复制表结构及数据到新表CREATE TABLE 新表 SELECT * FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable; ...

  3. MySql常用命令集

    MySql 常用命令集 Mysql常用命令 show databases; 显示数据库 create database name; 创建数据库 use databasename; 选择数据库 drop ...

  4. (12)We should aim for perfection — and stop fearing failure

    https://www.ted.com/talks/jon_bowers_we_should_aim_for_perfection_and_stop_fearing_failure/transcrip ...

  5. WM_PAINT和WM_ERASEBKGND消息

    1.OnPaint()函数是窗口重绘消息WM_PAINT的响应函数,当窗口重绘时会产生WM_ERASEBKGND消息和WM_PAINT消息,而且WM_ERASEBKGND会先于WM_PAINT产生,所 ...

  6. redis 部分操作

    http://pan.baidu.com/s/1eRXdbUy  下载安装地址 打开一个cmd窗口,使用cd命令切换到指定目录(D:\ruanjian\redis\64bit)运行 redis-ser ...

  7. 二级缓存EhCache在几种应用技术的配置方法和步骤总结

    一:Spring和Ehcache缓存集成 业务问题:如果仓库不经常变动,大量进出库,总是需要查询仓库列表 (列表重复) ,使用缓存优化 ! 阅读spring规范29章节 第一步: 导入ehcache的 ...

  8. 02:PostgreSQL Character Sets

    在利用postGIS导入shapefile文件到postgresql数据库的时候,老是提示字符串的问题,或者是乱码,试了好几种都不行,于是度娘之.... 使用默认的UTF8,提示信息是:建议使用LAT ...

  9. 19-background

    先来讲讲颜色表示法 一共有三种:单词.rgb表示法.十六进制表示法 rgb:红色 绿色 蓝色 三原色光学显示器,每个像素都是由三原色的发光原件组成的,靠明亮度不同调成不同的颜色的.用逗号隔开,r.g. ...

  10. 基于MySQL自增ID字段增量扫描研究

    目录 目录 1 1. 问题 1 2. 背景 1 3. InnoDB表 2 3.1. 自增ID为主键 2 3.2. 自增ID为普通索引 4 3.3. 原因分析 7 4. MyISAM表 8 4.1. 自 ...