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

例1:显示最近登录的5个账号

  1. 使用last -n 5 命令可以查看最近登录的5个账号的所有信息
yangkun  pts/2        60.118.118.118    Thu Jul  6 15:24   still logged in
li4 pts/0 60.118.118.118 Thu Jul 6 14:42 still logged in
zhangsan pts/4 60.118.118.118 Thu Jul 6 12:34 still logged in
zhangsan pts/3 60.118.118.118 Thu Jul 6 11:01 - 14:13 (03:12)
zhangsan pts/3 60.118.118.118 Thu Jul 6 11:01 - 11:01 (00:00)
  1. 使用awk命令截取用户名
last -n 5 | awk '{print $1}'

awk工作流程是这样的:读入有'\n'换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域,
$0则表示所有域,$1表示第一个域,$n表示第n个域。
默认域分隔符是 "空格" 或 "tab键", 所以$1表示登录用户,$3表示登录ip,以此类推.

例2:以passwd文本为例,进行awk操作

  • passwd文件格式:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

http://blog.csdn.net/a1154490629/article/details/52190801
  1. 显示/etc/passwd中的账户
cat /etc/passwd | awk  -F ':'  '{print $1}'     //-F 指定域的分隔符为 ':'
  1. 显示账户和账户对应shell,以tab键分割
cat /etc/passwd | awk -F ':' '{print $1 "\t" $7}'
  1. 显示账户和账户对应shell,以逗号分割,并添加列名 name,shell 在最后一行添加 test,/bin/test
cat /etc/passwd | awk -F ':' 'BEGIN {print "name,shell"}  {print $1","$7} END {pritn "test,/bin/test"}'

awk工作流程是这样的:先执行BEGING,然后读取文件,
读入有/n换行符分割的一条记录,
然后将记录按指定的域分隔符划分域,填充域,
$0则表示所有域,$1表示第一个域,
$n表示第n个域,随后开始执行模式所对应的动作action。
接着开始读入第二条记录,直到所有的记录都读完,最后执行END操作。
  1. 搜索passwd有root关键字的所有行
awk -F: '/root/' /etc/passwd

这种是pattern的使用示例,匹配了pattern(这里是root)的行才会执行action(没有指定action,默认输出每行的内容)。
  1. 搜索支持正则,查找以root开头,并输出对应的shell
awk -F ':' '/^root/{print $7}' /etc/passwd

这里指定了action{print $7}
  1. 统计passwd:文件名,每行的行号,每行的列数,对应的完整行内容:
awk  -F ':'  '{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}' /etc/passwd
注: 这里的FILENAME,NR等为固定字符不可修改 使用printf替代print,可以让代码更加简洁,易读
awk -F ':' '{printf("filename:%s,linenumber:%s,columns:%s,linecontent:%s\n",FILENAME,NR,NF,$0)}' /etc/passwd

awk使用记录的更多相关文章

  1. awk用法

    目前虽然有很多工具可以代替awk,但是呢我还是认为awk还是非常重要,比如有时候load数据到hive,mysql发现数据有点问题,这样可以先对比文件和库中数据是否一致,这样awk就发挥用处了,还有从 ...

  2. [Linux] AWK命令详解(大全)

    转载自:http://caoyanbao.iteye.com/blog/570868 什么是awk? 你可能对UNIX比较熟悉,但你可能对awk很陌生,这一点也不奇怪,的确,与其优秀的功能相比,awk ...

  3. awk 手册--【转载】

    1. 前言 有关本手册 : 这是一本awk学习指引,  其重点着重于 : l         awk 适于解决哪些问题 ? l         awk 常见的解题模式为何 ? 为使读者快速掌握awk解 ...

  4. awk中文手册

    1. 前言 有关本手册 : 这是一本awk学习指引, 其重点着重于 : l        awk 适于解决哪些问题 ? l        awk 常见的解题模式为何 ? 为使读者快速掌握awk解题的模 ...

  5. AWK print学习

    Awk是一种处理结构数据并输出格式化结果的编程语言, Awk 是其作者 "Aho,Weinberger,Kernighan" 的简称. Awk通常被用来进行格式扫描和处理.通过扫描 ...

  6. 见过的最好AWK手册

    原文: http://linuxfire.com.cn/~lily/awk.html 简体中文版由bones7456 (http://li2z.cn)整理. 原文:应该是 http://phi.sin ...

  7. 【译】 AWK教程指南 9读取命令行上的参数

    大部分的应用程序都允许使用者在命令之后增加一些选择性的参数.执行awk时这些参数大部分用于指定数据文件文件名,有时希望在程序中能从命令行上得到一些其它用途的数据.本小节中将叙述如何在awk程序中取用这 ...

  8. 【译】 AWK教程指南

    前面的话: 这几天写了一个程序,在同一个目录里生成了很多文件,需要统计其中部分文件的总大小,发现经常用到的ls.du等命令都无济于事,我甚至都想到了最笨的方法,写一个脚本:mkdir一个新目录,把要统 ...

  9. linux awk浅析(转)

    Awk 是一种非常好的语言,同时有一个非常奇怪的名称.在本系列(共三篇文章)的第一篇文章中,Daniel Robbins 将使您迅速掌握 awk 编程技巧.随着本系列的进展,将讨论更高级的主题,最后将 ...

随机推荐

  1. BZOJ1055[HAOI2008]玩具取名 【区间dp + 记忆化搜索】

    题目 某人有一套玩具,并想法给玩具命名.首先他选择WING四个字母中的任意一个字母作为玩具的基本名字.然后 他会根据自己的喜好,将名字中任意一个字母用“WING”中任意两个字母代替,使得自己的名字能够 ...

  2. CSU 2130~湖南多校对抗第八场 C

    2130: Permutations Submit Page   Summary   Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: ...

  3. [04]JS获取文件大小方法

    </pre><pre name="code" class="html"><input id="file" ty ...

  4. WKWebview 和 WebViewJavascriptBridge

    WKWebview 和 WebViewJavascriptBridge https://www.cnblogs.com/L-vincen/p/6681435.html 链接在这里,有很多不错的文章,大 ...

  5. js得到时间戳(10位数)

    //从1970年开始的毫秒数然后截取10位变成 从1970年开始的秒数 function timest() { var tmp = Date.parse( new Date() ).toString( ...

  6. 获得NOTEPAD++ Download Manager的所有下载列表的内容的au3脚本

    ;~ 获得NOTEPAD++ Download Manager的所有下载列表的内容的au3脚本 ;~ 作者: 鹏程万里 ;~ Email:aprial@163.com ;~ 创建日期: 2014年11 ...

  7. 华为上机测试题(及格分数线-java)

    PS:自己写的,自测试OK,供大家参考. /* 描述:10个学生考完期末考试评卷完成后,A老师需要划出及格线,要求如下:(1) 及格线是10的倍数:(2) 保证至少有60%的学生及格:(3) 如果所有 ...

  8. Linux 根据组来划分账号,根据部门同一账号的组,同一组下拥有同一权限

    #新机器添加 #创建部门组与账号 useradd testgroup #创建员工账号加入到部门组里 useradd -g testgroup user1 #员工在/data目录下创建的默认权限为774 ...

  9. Centos 6.3Yum安装NodeJS

    1. 添加epel源: (1)查看机器位数 file /sbin/init 或者 file /bin/ls (2)X64: rpm -ivh http://download.fedoraproject ...

  10. python--traceback模块

    #!/usr/bin/env python # -*- coding:utf-8 -*- # author:love_cat # 异常处理在python中已经屡见不鲜了,我们不仅可以处理异常,也可以将 ...