钱佩雨的博客

wish you happy everyday

awk

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日 107KB 下载

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

2010年11月25日 308KB 下载

sed awk grep

2009年12月27日 36KB 下载

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

2010年10月26日 107KB 下载

AWK 中文教程

2013年04月19日 733KB 下载

AWK文件处理总结

2011年10月27日 49KB 下载

awk.cheat.sheet

2009年08月30日 63KB 下载

linux awk实用手册

2009年01月16日 60KB 下载

没有更多推荐了,返回首页

关闭
关闭