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. 堆栈(Stacks)

    堆栈(Stacks) 准备工作 安装Docker 1.13及以上版本 安装Docker Compose正如第三部分的准备工作. 安装Docker Machine正如第四部分的准备工作. 阅读第一部分的 ...

  2. 在HTML网页上打印需要的内容

    首先在head里面加入下面一段js代码: function preview(oper) { if (oper < 10) { bdhtml = window.document.body.inne ...

  3. 杭电oj2022-2030

    2022 海选女主角 #include <stdio.h> #include <math.h> int main(){ ][]; int n,m,x,y,z,i,j; whil ...

  4. TMS320F28379D 使用心得之 SCI

    原文地址https://blog.csdn.net/qq_39545674/article/details/82597106 一.SCI 简介SCI(Serial Communication Inte ...

  5. 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---47

    以下为阅读<Linux命令行与shell脚本编程大全 第3版>的读书笔记,为了方便记录,特地与书的内容保持同步,特意做成一节一次随笔,特记录如下:

  6. 几种常见的YUV格式--yuv422:yuv420【转】

    转自:http://blog.csdn.net/u012288815/article/details/51799477 关于yuv 格式 YUV 格式通常有两大类:打包(packed)格式和平面(pl ...

  7. linux系统查看主机序列号

    #dmidecode -t 1 System Information        Manufacturer: IBM        Product Name: System x3650 M3 -[7 ...

  8. Java遍历list集合的4种方法

    list集合的遍历4种方法: package com.sort; import java.util.ArrayList; import java.util.Iterator; import java. ...

  9. 【C语言】复杂类型声明

    原文地址: http://blog.csdn.net/wangweixaut061/article/details/6549768 原文不让转载,但实在是有用,就拷贝了一小部分过来.全文请点开链接. ...

  10. Codeforces538F A Heap of Heaps(函数式线段树)

    题意:给你一个数组a[n],对于数组每次建立一个完全k叉树,对于每个节点,如果父节点的值比这个节点的值大,那么就是一个违规点,统计出1~n-1完全叉树下的违规点的各自的个数. 一个直觉的思想就是暴力, ...