AWK文本处理工具(Linux)

PS:刚开始实习,就给了个处理百万级别数据的任务,以前学过SHELL的一些东西sed/awk之类的处理,但是也没有具体的应用,只是在10几行10几列的小数据操作过,所以要从新学习下,并应用在实际工作中。你可以用excel编辑还好,保存就卡死你!

什么是AWK

  awk是什么?与其它大多数UNIX命令不同的是,从名字上看,我们不可能知道awk的功能,因为awk是三个人名的缩写,他们是:Aho、(Peter)Weinberg和(Brain)Kernighan。正是这三个人创造了awk---一个优秀的样式扫描与处理工具。

AWK使用方法

  awk语言最基本的功能是在文件或字符串中基于指定的规则浏览和抽取信息。

  有三种方式可调用awk:
  1. 命令行方式
  2. 将所有的awk命令插入一个文件,并利用chmod使awk文件成为执行 -f scripts.awk
  3. 将所有的awk命令插入一个单独文件,然后调用 #!/bin/awk -f

具体的使用方法

1.保存awk输出

  从myfile文件保存到nwefile文件中,这里的$0表示所有内容

 awk '{print $0}'  myfile>newfile

2.使用tee,在输出到文件的同时输出到屏幕(利用管道'|')

 awk '{print $0}' myfile |tee newfile

3.awk 一般的语法形式

awk [-Field-separator] 'commands' input-file(s)

awk -f awk-script-file input-file

4.awk脚本的一般形式

#awk-script-file.awk
BEGIN {FS=","}
{
print $
}
END {print "FINISH"}

其中,FS与命令行的-F是同样的,用来设定分隔符,在处理SCV文件时候需要把“,”作为分隔符

AWK内置函数

  awk之所以成为一种优秀的程序设计语言的原因之一是它吸收了某些优秀的程序设计语言语言的许多优点。这些优点之一就是内置函数的使用,awk定义并支持了一系列的内置函数,由于这些函数的使用,使得awk提供的功能更为完善和强大。

内置字符串函数:

gsub(r,s)           在整个$0中用s替代r

awk 'gsub(/name/,"xingming") {print $0}' temp

gsub(r,s,t)         在整个t中用s替代r

index(s,t)          返回s中字符串t的第一位置,失败返回0

awk 'BEGIN {print index("Sunny","ny")}' temp     返回4

length(s)           返回s的长度

match(s,r)          测试s是否包含匹配r的字符串,失败返回0 也可以使用~/xxx/

awk '$1=="J.Lulu" {print match($1,"u")}' temp    返回4

split(s,a,fs)       在fs上将s分成序列a

awk 'BEGIN {print split("12#345#6789",myarray,"#")"'

返回3,同时myarray[]="", myarray[]="", myarray[]=""

sprint(fmt,exp)     返回经fmt格式化后的exp

sub(r,s)   从$0中最左边最长的子串中用s代替r(只更换第一遇到的匹配字符串)

substr(s,p)         返回字符串s中从p开始的后缀部分

substr(s,p,n)       返回字符串s中从p开始长度为n的后缀部分

2.awk中自定义语句

1.支持if判断

 if(表达式)

    {语句1}

 else if(表达式)

    {语句2}

 else

    {语句3}

2.支持for循环

for(变量 in 数组)

    {语句}
for(变量;条件;表达式)

    {语句}

3.支持while循环

while(表达式)

    {语句}
do

{语句}while(条件)

AWK文本处理工具(Linux)的更多相关文章

  1. Linux - awk 文本处理工具一

    AWK AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一:awk经过改进生成的新的版本nawk,gawk,现在默认linux系统下日常使用的是gawk,用命 ...

  2. Linux 之 awk文本分析工具

    AWK是一种处理文本文件的语言,是一个强大的文本分析工具.Linux环境中自带. awk调用方法 命令行 awk [-F field-separator] 'commands' input-file( ...

  3. awk 文本处理工具

    awk: 强大的文本处理工具,擅长对日志文件进行分析: 不仅用于Linux,也是任何环境中现在的功能最强大的数据处理引擎: 语法说明: awk '{pattern + action}' {filena ...

  4. Linux - awk 文本处理工具六 - 日志关键字筛选

    查看多少行 ? awk '{print NR}' access.log |tail -n1 日期时间筛选检测 awk '/Dec 10/ {print $0}' /opt/mongod/log/mon ...

  5. Linux - awk 文本处理工具五

    awk 线上处理常用模式 awk 处理复杂日志 6.19: DHB_014_号百总机服务业务日报:广州 到达数异常! DHB_023_号百漏话提醒日报:珠海 到达数异常! 6.20: DHB_014_ ...

  6. Linux - awk 文本处理工具四

    awk 常用示例 获取本机 IP 方式 /sbin/ifconfig |awk -v RS="Bcast:" '{print $NF}'|awk -F: '/addr/{print ...

  7. Linux - awk 文本处理工具三

    AWK 文件打印匹配 格式示例 awk '/Tom/' file # 打印匹配到得行 awk '/^Tom/{print $1}' # 匹配Tom开头的行 打印第一个字段 awk '$1 !~ /ly ...

  8. awk文本分析工具

    Usage:awk [option] 'program' file ... awk [option] -f progfile file ... [optin]: -F fs 指定输入分隔符,fs可是字 ...

  9. AWK文本分析工具-常用场景(持续更新中)

    AWK help document:http://www.gnu.org/software/gawk/manual/gawk.html 问题 awk命令 备注 对请求IP统计分组排序?     显示列 ...

随机推荐

  1. Python 2.7_Second_try_爬取阳光电影网_获取电影下载地址并写入文件 20161207

    1.昨天文章http://www.cnblogs.com/Mr-Cxy/p/6139705.html 是获取电影网站主菜单 然后获取每个菜单下的电影url  2.今天是对电影url 进行再次解析获取下 ...

  2. MySQL5.7.10免安装版配置

     最新版的 Mysql 不提供图形界面的安装了, 下载下来是一个压缩包的形式, 那么我们如何来使用它呢, 让它为我们工作呢? 环境: mysql-5.7.10-winx64 + win7(64位) 一 ...

  3. JAXB 2.0 API is being loaded from the bootstrap classloader

    在使用webservice,mule esb等需要jaxb的项目里经常会出现 JAXB 2.0 API is being loaded from the bootstrap classloader这个 ...

  4. iOS应用之微信支付集成-直接前端集成

    所有信息的生成都在前端完成,包括对订单进行sign签名以及MD5签名加密(此方法相对来说有些复杂,没有官方给的方法简单).注:官方给的是v3&v4支付流程,签名和加密都是在服务器端进行,由于没 ...

  5. hdu 2202 最大三角形 (凸包)

    最大三角形 Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  6. RTX2010服务器端的主要通信端口有哪些?

    RTX服务端程序在安装之后,如果安装服务端电脑的操作系统有防火墙(如Windows XP.Windows2003等)或者安装了防火墙(如瑞星.Norton等),那么需要在防火墙上打开RTX所需要使用的 ...

  7. canvas 画六边形

    <section class="m1-c"> <div class="m1-t clearfix"> <ul> <li ...

  8. python学习之路-day4-装饰器&json&pickle

    本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 一.生成器 1.列表生成式 >>> L = [x * x for x in range(10 ...

  9. iOS开发:深入理解GCD 第二篇(dispatch_group、dispatch_barrier、基于线程安全的多读单写)

    Dispatch Group在追加到Dispatch Queue中的多个任务处理完毕之后想执行结束处理,这种需求会经常出现.如果只是使用一个Serial Dispatch Queue(串行队列)时,只 ...

  10. IOS 代码块传值

    #import <UIKit/UIKit.h> typedef void (^MyBlock)(NSString*); @interface SecondViewController : ...