客户端

一分钟学awk够用(产品经理都懂了)【转】

所在版块: 程序员 2016-02-16 16:09 [复制链接] 查看: 2731|回复: 0
                                                1分钟懂awk-技不在深,够用就行
1.什么是AWK
(1)Aho、Weinberger、Kernighan三位发明者名字首字母;
(2)一个行文本处理工具;
2.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 $0;
}
}
8.结束语
对不起,楼主欺骗了你,认真看完本文或许不止1分钟。不过,如果你真的认真阅读并超过了1分钟,相信你会有收获。
==【完】==


实时好文,欢迎长按关注“架构师之路”


==好文推荐==
回【join】秒懂SQL中各种join

回【追查】Linux下线上问题常用追查命令
回【微信】微信为何这么省流量(火)
回【秒杀】秒杀系统架构优化思路(火)
回【招聘】入职58到家
回【设计】数据库架构师该设计什么(新)


==小游戏==
回大于10的整数,返回随机好文(猜猜怎么实现的


码字不易,求帮转
                    
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码关注微信公众号

QQ|Archiver|手机版|小黑屋|mwt-design ( 沪ICP备12041170号-1

GMT+8, 2024-11-25 14:00 , Processed in 0.076116 second(s), 36 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回列表