什么是awk?

AWK是一个强大的文本处理工具。可以使用awk读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。

使用awk的基本格式

awk [options] ‘command’ file(s)
command 由pattern和action两部分组成
command 的格式 为 pattern {action}
1. pattern可以是正则表达式或者关系表达式
2. action 包含两部分:

(1). 内置函数
print printf getline 等
(2). 控制指令
if else while

awk options配置选项

  • -F filed-separator(分割符,默认为空格)
    例子:
#打印所有用户的用户名、UID、GID
#内置变量$1 $3 $4的使用可以参考下面的awk内置变量的说明及
awk -F ':' '{printf "USER:%-20s UID:%10i GID:%10i\n",$1,$3,$4}' /etc/passwd

awk内置变量

  • $0: 表示当前行
  • $1: 表示每行的第一个字段
  • $2: 表示每行的第二个字段
  • ….
  • *$n: 表示每行的第三个字段
  • NR: 每行的行号
  • NF: 每行的字段数

例子:

#在上一个例子的基础上添加行号、文件名、字段数
awk -F ':' '{printf "LineNUmber:%5i | USER:%-20s | UID:%10i | GID:%10i | FILENAME:%10s|NF:%10i\n",NR,$1,$3,$4,FILENAME,NF}' /etc/passwd

awk逻辑判断式

awk 中的逻辑判断式可以是正则表达式或者关系表达式

~,!~:正则表达式

例子: 打印m开头的用户名

$awk -F ':' '$1~/^m.*/{print $1}' /etc/passwd

对正则表达式取反,输出正则表达式匹配行的补集

$awk -F ':' '$1!~/^m.*/{print $1}' /etc/passwd

==,!=,<,>: 逻辑表达式

例子: 判断UID的大小,输出UID大于100的用户名和UID

$awk -F ':' '$3>100{print $1,$3}' /etc/passwd

例子:输出UID不等于100的用户名和UID

$awk -F ':' '$3 != 100{print $1,$3}' /etc/passwd

awk BEGIN代码块、END代码块

BEGIN{command1}pattern{command2}END{command3}
例子 :在开始添加表头,在结尾添加表尾

awk -F ':' 'BEGIN{print "LineNum TotalColNum User UID"}{print NR,NF,$1,$3}END{print "-----"FILENAME"---------"}' /etc/passwd

awk使用实例

  • 统计当前目录文件总和
 ls -l|awk 'BEGIN{size=0}{size+=$5}END{print "size is "size/1024/1024"M"}'
  • 统计用户数
awk -F ':' 'BEGIN{count=0}$1!~/^$/{count++}END{print " count = "count}' /etc/passwd
  • 输出UID大于100的用户名以及在输出的行集合中的行号
awk -F ':' 'BEGIN{count=0}{if ($3 >100 ) name[count++]=$1}END{ for (i=0;i<count;i++) print i,name[i]}' /etc/passwd
  • 统计每种网络状态的连接的数量
netstat -anp | awk '$6~/CONNECTED|LISTEN/{sum[$6]++}END{for (i in sum) print i,sum[i]}'

awk命令入门的更多相关文章

  1. Linux Shell脚本入门--awk命令详解

    简单使用: awk :对于文件中一行行的独处来执行操作 . awk -F :'{print $1,$4}'   :使用‘:’来分割这一行,把这一行的第一第四个域打印出来 . 详细介绍: AWK命令介绍 ...

  2. awk 命令使用入门

    Linux 下处理和分析文本文件内容,AWK 命令是一个强有力的工具.特别是文件内容是以行和列的形式排版的时候,AWK 就是命令行界的 Excel 啊! 简单的 awk 命令可以直接在命令行中使用,复 ...

  3. linux awk命令详解

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  4. AWK命令学习

    使用方法 awk 'pattern {action}' {filenames} 尽管操作可能会很复杂,但语法总是这样,其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到 ...

  5. awk 命令

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

  6. [Linux] linux awk命令详解

    reference : http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html 简介 awk是一个强大的文本分析工具,相对于g ...

  7. awk命令简单介绍

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

  8. Linux的awk命令

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

  9. awk命令--update20150120

    简介 awk是一个强大的文本分析工具,把文件逐行读入,以空格为默认分隔符分割成field,切开的部分再进行各种分析处理. 模式和动作: 任何awk语句都是由模式和动作组成,模式部分决定动作语句何时触发 ...

随机推荐

  1. java架构之路(多线程)JMM和volatile关键字(二)

    貌似两个多月没写博客,不知道年前这段时间都去忙了什么. 好久以前写过一次和volatile相关的博客,感觉没写的那么深入吧,这次我们继续说我们的volatile关键字. 复习: 先来简单的复习一遍以前 ...

  2. 【Spark 内核】 Spark 内核解析-上

    Spark内核泛指Spark的核心运行机制,包括Spark核心组件的运行机制.Spark任务调度机制.Spark内存管理机制.Spark核心功能的运行原理等,熟练掌握Spark内核原理,能够帮助我们更 ...

  3. STM32动态内存分配需要注意的地方

    STM32进行动态内存分配是需要注意动态内存分配大小不要超过.S文件中设置Heap Size大小 如图所示: 0x4000 :可以分配得最大字节是16384bytes 这个地方malloc的大小超过了 ...

  4. APICloud开发者进阶之路 |audioRecorder录音模块Demo

    本文出自APICloud官方论坛   audioRecorder 模块通过封装系统的录音接口,能够快速的为开发者提供一个完整的录音功能. 该模块提供Android和iOS版本,录音方式及录制的音频格式 ...

  5. vue+bootstrap4+mybatis分页

    先看效果 Springboot+Mybatis+Pagehelper分页具体实现略. Controller返回数据 @GetMapping("/findByPage") publi ...

  6. 关于neo4j初入门(5)

    neo4j和Java Neo4j提供JAVA API以编程方式执行所有数据库操作. 它支持两种类型的API: Neo4j的原生的Java API Neo4j Cypher Java API Neo4j ...

  7. item方法

    class Person: def __init__(self, name, age): self.name = name self.age = age def __getitem__(self, i ...

  8. JS ES6补充

    补充点:1.let const 2.字符串模板 3.箭头函数  4.对象的单体模式 5.面向对象 一.定义变量 A.var 特点: 1.定义全局变量 2.可以重复定义 3.变量名提升 <!DOC ...

  9. GeoGebra学习-lesson1

    我曾经想过学习数学的时候总觉得不太直观,希望通过直观的图形来直观的学习数学.庆幸的是,在B站看视频时看到了妈咪叔使用了这款数学软件,很好用的样子.就去简单的了解了一下,下面是摘抄自<Geogeb ...

  10. 每天翻译一点点: WPF Application Framework (WAF)

    ps:http://waf.codeplex.com/wikipage?title=Model-View-ViewModel%20Pattern&referringTitle=Document ...