awk

原创 2018年04月16日 20:17:32

awk基础入门

  • linux的一个命令,是一门计算机脚本语言。awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

  • awk基本命令

    awk '{print}' haha.txt //打印全部
    awk '{print $1}' haha.txt//打印第一行
    awk '{print $3}' haha.txt//打印第三行
    awk '{print $1"\t"$3}' haha.txt//打印第一行和第三行用制表符号隔开
    awk '{print $NF}' haha.txt //打印出最后一列
    awk '{print $(NF-1)}' haha.txt //打印出最后第二列
  • record 横行 field 竖行

    • NR 横行的数量
    • NF 竖行的数量
    [kiosk@foundation45 Desktop]$ awk '{print NR"\t" $1"\t"$3}' haha.txt //打印出行号

    tips:awk认为空格是将两个拼接起来,所以要想输出有空格的话,必须加逗号,awk的默认分隔符是空格,所以加逗号之后,输出会出现一个空格的效果。也可以连接制表符号等等。

  • awk的查找功能

    • 查找数字
    查找第五列中数字是60的
    [kiosk@foundation45 Desktop]$ awk ' $5==60{print $0 }' haha.txt
    张三123  157 60
    张三1720  155 60
    张三426  159 60
    张三4323  151 60
    • 查找字符串
    //注意:字符串要加双引号,否则不能查找成功。
    [kiosk@foundation45 Desktop]$ awk ' $1=="张三17"{print $0 }' haha.txt
    张三1720  155 60
  • awk的内部变量

变量 作用
NF 竖行
NR 横行
FS 默认输入分割符号
OFS 默认输出分割符号
FILENAME 文件名
ENVIRON 支持队列中系统环境变量的使用
RS 控制记录分割符

  • 改变默认分割符号。

    [kiosk@foundation45 Desktop]$ awk 'BEGIN{FS=","}{print $2,$1}'
    //把逗号作为默认分隔符。
  • 同时操作两个文件的时候,我们可能需要用文件名来区分,可以打印出filename。

    [kiosk@foundation45 Desktop]$ awk '{print FILENAME"\t" $2,$1}' haha.txt 
  • 隐藏某一行信息不被输出

    [kiosk@foundation45 Desktop]$ awk '{$3="xxxx";print $0}' haha.txt 
    输出效果:
    张三57 男 xxxx 154 59
    张三58 男 xxxx 152 52
    张三59 女 xxxx 154 56
    • awk自定义变量和计算
  • 自定义变量计算

    • awk支持加减乘除运算(先做运算,再做字符串的拼接)
    [kiosk@foundation45 Desktop]$ awk '{a=2; b=2; print a b}'
     //enter键入
    22
    ^C
    [kiosk@foundation45 Desktop]$ awk '{a=2; b=2; print a+b}'
    
    4
    ^C      
    • 正则表达式(Regular Expression)
  • ./abc/ abc三个字符连在一起的

    • ”abc”
    • “xxabcxx’

    string.txt

    abc
    abcxx
    xxabch
    a b c
    adc
    [kiosk@foundation45 Desktop]$ awk '/abc/{print $0}' string.txt 
    abc
    abcxx
    xxabch
  • ./a.c/ axc类型的

    • ”abc”
    • “acc”
    • “adc”
    [kiosk@foundation45 Desktop]$ awk '/a.c/{print $0}' string.txt 
    abc
    abcxx
    xxabch
    adc
  • 转译字符\ 用来匹配特殊字符的

    • ./a\.c/ 只匹配a.c的
  • ^ 和 $

    • /^abc/ 匹配abc出现在最前面
    • /abc$/ abc必须出现在字符串的结尾
  • []

    • /a[xyz]c/ 匹配axc,ayc,azc这三个,其他的是不可以的。

    • /a[a-z]c/ 匹配a和c之间必须出西安一个小写字母。

    • /a[a-zA-Z]c/ 出现大小写字母都是可以的。

    • 写在[]里面的^表示不是的意思

      • /a【^a-z】c/ 不能出现a-z
  • *和 +和?

    • /a*b/ a可以出现多次
    • /a+b/
    • /a?b/

linux awk详解awk详解awk详解awk详解

  • 2009年02月06日 16:46
  • 107KB
  • 下载

awk学习awk学习awk学习awk学习

  • 2010年11月25日 21:24
  • 308KB
  • 下载

sed awk grep

  • 2009年12月27日 19:51
  • 36KB
  • 下载

awk的详细介绍,awk的使用介绍

  • 2010年10月26日 23:38
  • 107KB
  • 下载

AWK 中文教程

  • 2013年04月19日 07:44
  • 733KB
  • 下载

awk if语句

awk命令以if结构开头的话句属于操作语句。条件模式(conditional pattern) 中。if是隐含的。而条件操作语句的if则是直接声明的,后面跟了一个用圆括号括起来的表达式。如果该表达式的...
  • xiyangyang052
  • xiyangyang052
  • 2015-05-03 22:34:52
  • 6643

AWK文件处理总结

  • 2011年10月27日 10:32
  • 49KB
  • 下载

Awk关系运算符和布尔运算符

                              Awk关系运算符和布尔运算符                                           A...
  • liu454638324
  • liu454638324
  • 2014-11-28 19:24:40
  • 1295

正则表达式awk

1. awk简介awk 是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是li...
  • tolys
  • tolys
  • 2007-09-30 09:59:00
  • 23106

awk基本用法简介

之前说过sed, 今天来说awk, 它也是一个文本处理器, 是linux下的一个命令, 比sed更强大。 搞linux开发, 尤其是后台开发, 这个命令几乎必须要用到。 awk这三个字母分别代表其三位...
  • stpeace
  • stpeace
  • 2015-07-12 19:49:31
  • 6126
收藏助手
不良信息举报
您举报文章:awk
举报原因:
原因补充:

(最多只允许输入30个字)