简介

awk命令的名称是取自三位创始人Alfred Aho 、Peter Weinberger 和 Brian Kernighan姓名的首字母,awk有自己的程序设计语言,设计简短的程序,读入文件,数据排序,处理数据,生成报表等功能。

awk 通常用于文本处理和报表生成,最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。

awk 通常以文件的一行为处理单位的,awk每接收文件的一行,然后执行相应的命令,来处理文本,完整的awk脚本通常用来格式化文本文件中的信息

使用方式

awk '{pattern + action}' {filenames}

pattern 表示 AWK 在数据中查找的内容,正则表达式,用斜杠括起来

action 是在找到匹配内容时所执行的一系列命令

花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组

使用说明[hebinbin@iZ25y8wtfbqZ ~]$ awk '{print $0}' /etc/passwd

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/sbin/nologin

依次对/etc/passwd 中的每一行执行 print 命令,所有输出都发送到 stdout,所得到的结果与执行 cat /etc/passwd 完全相同

$0 $n表示

-F参数:指定分隔符,可指定一个或多个root@iZ25me8kko3Z:~# awk -F "/" -F ":" '{ print $1 " " $9 " " $0 }' /etc/passwd

root  root:x:0:0:root:/root:/bin/bash

daemon  daemon:x:1:1:daemon:/usr/sbin:/bin/sh

bin  bin:x:2:2:bin:/bin:/bin/sh

sys  sys:x:3:3:sys:/dev:/bin/sh

只查看test.txt文件20-30行内容root@iZ25me8kko3Z:~# awk '{if(NR>=20 && NR<=30) print $1}' test.txt

sock.close()

print('%s

break

elif

data

data

#print(data)

#print(clients)

#if

if

print(data)

BEGIN 和 END 模块

awk 在开始处理输入文件之前会执行 BEGIN 块,处理了输入文件中的所有行之后执行END块

统计/etc/passwd的账户人数root@iZ25me8kko3Z:~# awk '{count++;print $0;} END{print "user count is ",count}' /etc/passwd

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

.................

user count is  47

count是自定义变量,没有初始化默认是0,action{}中的多个语句用 ;隔开root@iZ25me8kko3Z:~# awk 'BEGIN {count=0;print "[start] user count is ",count} {count=count+1;print $0} END{print "[end] user count is ",count}' /etc/passwd

[start] user count is  0

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

.....................

[end] user count is  47

统计某个文件夹下的文件占用的字节数root@iZ25me8kko3Z:~# ll |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ",size}'

[end]size is  3090190

awk运算符

root@iZ25me8kko3Z:~# awk 'BEGIN{a=5;a+=5;print a}'

10

root@iZ25me8kko3Z:~# awk 'BEGIN{a=1;b=2;print (a>2&&b>1,a=1||b>1)}'

0 1root@iZ25me8kko3Z:~# awk 'BEGIN{a=1;b=2;print (a>2&&b>1,a=1||b>1)}'

1

root@iZ25me8kko3Z:~# awk 'BEGIN{a="100testaa";if(a~/100/) {print "ok"}}'

ok

root@iZ25me8kko3Z:~# echo|awk 'BEGIN{a="100testaaa"}a~/test/{print "ok"}'

okroot@iZ25me8kko3Z:~# awk 'BEGIN{a=11;if(a>=9){print "ok"}}'

ok

root@iZ25me8kko3Z:~# awk 'BEGIN{a;if(a>=b){print "ok"}}'

ok

root@root@iZ25me8kko3Z:~# awk 'BEGIN{a="b";print a=="b"?"ok":"err"}'

ok

root@iZ25me8kko3Z:~# awk 'BEGIN{a="b";print a=="c"?"ok":"err"}'

err

awk内置变量

awk正则使用

awk '/REG/{action} ' file,/REG/为正则表达式,可以将$0 中,满足条件的记录送入到:action 进行处理root@iZ25me8kko3Z:/etc# awk '/root/{print $0}' passwd

root:x:0:0:root:/root:/bin/bash

awk '布尔表达式{action}' file 仅当对前面的布尔表达式求值为真时, awk 才执行代码块root@iZ25me8kko3Z:/etc# awk -F: '$1=="root"{print $0}' passwd

root:x:0:0:root:/root:/bin/bash

awk 的 if、循环和数组

if条件语句{

if ($1=="foo"){

if($2=="foo"){

print "uno"

}else{

print "one"

}

}elseif($1=="bar"){

print "two"

}else{

print "three"

}

}

循环结构

do...while{

count=1do {

print "I get printed at least once no matter what"

} while ( count !=1 )

}

forfor ( initial assignment; comparison; increment ) {

code block

}

break  continuex=1

while(1) {

print "iteration", x

if ( x==10 ) {

break

}

x++

}x=1while (1) {

if ( x==4 ) {

x++

continue

}

print "iteration", x

if ( x>20 ) {

break

}

x++

}

数组   AWK 中的数组都是关联数组,数字索引也会转变为字符串索引{

cities[1]=”beijing”

cities[2]=”shanghai”

cities[“three”]=”guangzhou”

for( c in cities) {

print cities[c]

}

print cities[1]

print cities[“1”]

print cities[“three”]

}

常用字符串函数

linux awk命令NR详解,linux awk命令详解相关推荐

  1. linux awk命令NR详解,awk命令之NR和FNR变量用法详解

    0.说明 刚好用到awk的NR和FNR这两个内建变量.经过一些测试大概熟悉其用法,这里记录下(本文只是用NR和FNR变量来判断当前读入的是第一个还是第二个文件,好对每个文件分别运行指定的脚本.需要注意 ...

  2. linux awk命令NR详解,Linux awk 命令详解

    awk是一个非常棒的数字处理工具.相比于sed常常作用于一整行的处理,awk则比较倾向于将一行分为数个"字段"来处理.运行效率高,而且代码简单,对格式化的文本处理能力超强.先来一个 ...

  3. linux下awk命令详解,Linux文件处理awk命令-linux awk命令详解-嗨客网

    Linux文件处理awk命令详解教程 Linux awk命令说明 awk 是一个强大的文本分析工具,相对于 awk 有 3 个不同版本: awk.nawk 和 gawk,未作特别说明,一般指 gawk ...

  4. linux awk命令根据分隔符输出,Linux运维知识之Linux awk命令详解

    本文主要向大家介绍了Linux运维知识之Linux awk命令详解,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. awk :适用程序,一种unix工具 就是一个强大的文本分析工 ...

  5. Linux命令:文本处理工具awk详解

    awk命令简介: awk是一个强大的文本分析工具,通常,awk是以文件的每一行,为处理单位的.awk每接收文件的一行,然后执行相应的命令,来处理文本.  1.命令格式: awk 'pattern {a ...

  6. linux下awk命令详解,Linux:awk命令详解

    个选项,但如果浏览如passwd文件,此文件各域使用冒号作为分隔符,则必须使用-F选项awk -F 'commands' input-file 第二种,将所有awk命令插入一个文件,并使awk程序可执 ...

  7. php 字符流在linux,PHP_linux正则表达式awk详解,awk和sed一样是流式编辑器,它 - phpStudy...

    linux正则表达式awk详解 awk和sed一样是流式编辑器,它也是针对文档中的行来操作的,一行一行的去执行.awk比sed更加强大,它能做到sed能做到的,同样也能做到sed不能做到的.awk常用 ...

  8. awk 匹配_详解Linux三剑客之awk

    第一篇 awk简介与表达式实例 一种名字怪异的语言 模式扫描和处理,处理数据和生成报告. awk不仅仅是linux系统中的一个命令,而且是一种编程语言:它可以用来处理数据和生成报告(excel):处理 ...

  9. Linux文本三剑客之一——awk详解(1)——awk看这两篇就够啦~PS:文末有练习,来练练手吧

    shell编程三剑客 grep --> egrep --> 文本过滤 查询 awk 文本截取 sed  文本的替换和修改 目录 awk awk也可以做小数运算 awk命令简要处理流程 aw ...

最新文章

  1. 3NF分解与BCNF分解
  2. 原创 | 从智慧交通、智慧安防、智能电网三大应用场景看我国智慧城市建设现状...
  3. Ajax PHP 边学边练 之四 表单
  4. Private strand flush not complete
  5. 得力助手 消防员的 消防机器人_消防机器人:消防员的“得力助手”(科技大观)...
  6. 手动创建数据库实例全攻略7:UNDO
  7. 自定义的注解校验器的实现
  8. php while循环次数,php while循环得到循环次数
  9. 【python】socket编程常量错误问题-1 'AF_INET'
  10. python epub转txt_怎么将很多个TXT合并成epub?
  11. 计算机技术中储存容量最大的单位,计算机中最大单位是什么
  12. 计算机丢失libcef,无法启动程序,因为计算机中丢失libcef.dll。怎么办?
  13. 学计算机需要会拼音吗,计算机学习拼音
  14. bzoj:1922: [Sdoi2010]大陆争霸 (luogu 2446)
  15. js基础——图片切换实例
  16. 单片机裸机 vs RTOS多线程
  17. 墨门云文件加密系统有哪些功能特点?
  18. getopt Python
  19. 育碧遭黑客攻击:用户账号被窃
  20. windows下x265编译

热门文章

  1. Baumer工业相机堡盟相机不满帧如何使用CameraExplorer设置相机参数让它的帧率达到满帧
  2. 前端流行的三种布局详解
  3. 12 月 15 日,Google DevFest 2019 谷歌开发者节,侬久等啦!
  4. IOS与Android APP界面设计规范要点
  5. 网易易盾助力工信部装备工业发展中心 守卫网站安全第一道防线
  6. 统计销量 mysql_使用MySQL分析网络销售数据
  7. 前端人必看的JS面试题汇总
  8. [转载]欧洲杯四强之魔兽争霸版
  9. 小程序中如何实时监听app.js中globalData的数据变化
  10. Python读取数据库数据写入Excel