文档章节

41.每日一个Linux命令 ----awk

 詹玉香
发布于 2016/08/05 16:00
字数 803
阅读 21
收藏 1

描述:强大的文本分析工具,按行处理。

用法:awk '/search pattern1/ {Actions}

                   /search pattern2/ {Actions}' file

1.search pattern正则表达式 布尔值

2.Actions 输出的语法

3.单引号的作用防止shell截断

工作方式:

1) Awk 一次读取文件中的一行

2)对于一行,按照给定的正则表达式的顺序进行匹配,如果匹配则执行对应的 Action

3)如果没有匹配上则不执行任何动作

4)在上诉的语法中, Search Pattern 和 Action 是可选的,但是必须提供其中一个

5)如果 Search Pattern 未提供,则对所有的输入行执行 Action 操作

6)如果 Action 未提供,则默认打印出该行的数据

7) {} 这种 Action 不做任何事情,和未提供的 Action 的工作方式不一样

8) Action 中的语句应该使用分号分隔

内建变量

变量 描述
\$n 当前记录的第n个字段,字段间由FS分隔
\$0 完整的输入记录
ARGC 命令行参数的数目
ARGIND 命令行中当前文件的位置(从0开始算)
ARGV 包含命令行参数的数组
CONVFMT 数字转换格式(默认值为%.6g)ENVIRON环境变量关联数组
ERRNO 最后一个系统错误的描述
FIELDWIDTHS 字段宽度列表(用空格键分隔)
FILENAME 当前文件名
FNR 同NR,但相对于当前文件
FS 字段分隔符(默认是任何空格)
IGNORECASE 如果为真,则进行忽略大小写的匹配
NF 当前记录中的字段数
NR 当前记录数
OFMT 数字的输出格式(默认值是%.6g)
OFS 输出字段分隔符(默认值是一个空格)
ORS 输出记录分隔符(默认值是一个换行符)
RLENGTH 由match函数所匹配的字符串的长度
RS 记录分隔符(默认是一个换行符)
RSTART 由match函数所匹配的字符串的第一个位置
SUBSEP 数组下标分隔符(默认值是/034)

示例:

[root@share19 ~]# cat employee.txt 
100  Thomas  Manager    Sales       $5,000    
200  Jason   Developer  Technology  $5,500    
300  Sanjay  Sysadmin   Technology  $7,000    
400  Nisha   Manager    Marketing   $9,500    
500  Randy   DBA        Technology  $6,000 

awk 默认

[root@share19 ~]# awk '{print}' employee.txt 
100  Thomas  Manager    Sales       $5,000    
200  Jason   Developer  Technology  $5,500    
300  Sanjay  Sysadmin   Technology  $7,000    
400  Nisha   Manager    Marketing   $9,500    
500  Randy   DBA        Technology  $6,000

awk 打印匹配的行

[root@share19 ~]# awk '/Thomas/
> /Nisha/' employee.txt
100  Thomas  Manager    Sales       $5,000    
400  Nisha   Manager    Marketing   $9,500  

打印指定域

[root@share19 ~]# awk '{print $2,$5}' employee.txt 
Thomas $5,000
Jason $5,500
Sanjay $7,000
Nisha $9,500
Randy $6,00
[root@share19 ~]# awk '{print $2,$NF}' employee.txt 
Thomas $5,000
Jason $5,500
Sanjay $7,000
Nisha $9,500
Randy $6,000

awk 开始结束动作

BEGIN { Actions}    
{ACTION} # Action for everyline in a file    
END { Actions }    
[root@share19 ~]# awk 'BEGIN {print "NAME/tDesignation/tDepartment/tSalary"}
{print $2,"\t",$3,"\t",$4,"\t",$NF}
END {print "Report Generated\n--------------------"}' employee.txt 
NAME/tDesignation/tDepartment/tSalary
Thomas   Manager         Sales   $5,000
Jason    Developer       Technology      $5,500
Sanjay   Sysadmin        Technology      $7,000
Nisha    Manager         Marketing       $9,500
Randy    DBA     Technology      $6,000
Report Generated
--------------------

找出ID>200的员工

[root@share19 ~]# awk '$1>200' employee.txt 
300  Sanjay  Sysadmin   Technology  $7,000    
400  Nisha   Manager    Marketing   $9,500    
500  Randy   DBA        Technology  $6,000

打印技术部员工

[root@share19 ~]# awk '$4 ~ /Technology/' employee.txt 
200  Jason   Developer  Technology  $5,500    
300  Sanjay  Sysadmin   Technology  $7,000    
500  Randy   DBA        Technology  $6,000

打印技术部的员工数

[root@share19 ~]# awk 'BEGIN {count = 0}
> $4 ~ /Technology/ {count = count +1} 
> END {print "Number of employee in Technology Dept",count}' employee.txt
Number of employee in Technology Dept 3

 

本文转载自:http://blog.csdn.net/andyxm/article/details/5964071

粉丝 7
博文 44
码字总数 0
作品 0
广州
运维
私信 提问
【Linux】基础每日一命之awk命令(上)

awk 是一个强大的文本分析工具 语法: awk [选项参数] 'script' var=value file(s) 或 awk [选项参数] -f scriptfile var=value file(s) 参数说明: -F fs or --filed-separator fs :指定输......

白羊IT
2018/06/27
0
0
大数据教程(2.10):Linux命令awk详解

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

em_aaron
2018/07/14
21
0
9.6/9.7 awk(上、下)

9.6 awk命令(上) >awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式...

Champin
2017/11/22
39
0
如何使用 awk 和正则表达式过滤文本或文件中的字符串

当我们在 Unix/Linux 下使用特定的命令从字符串或文件中读取或编辑文本时,我们经常需要过滤输出以得到感兴趣的部分。这时正则表达式就派上用场了。 什么是正则表达式? 正则表达式可以定义为...

开元中国2015
2016/07/19
48
0
Linux awk工具详解

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

zengxiantao1994
2017/09/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Dubbo-自适应拓展机制

背景 在 Dubbo 中,很多拓展都是通过 SPI 机制进行加载的,比如 Protocol、Cluster、LoadBalance 等,这些都是Dubbo的基础组件。这些基础组件的拓展不是在系统框架启动阶段被加载,而是拓展方...

rock-man
34分钟前
5
0
Kali安装fcitx输入法(五笔)

安装fcitx > sudo apt-get install fcitx-rime fcitx-config-gtk3 重启 > sudo reboot fcitx配置 效果就是这样 配置输入法切换 系统设置...

yeahlife
36分钟前
4
0
IE之css3效果兼容

本文转载于:专业的前端网站▷IE之css3效果兼容 一、兼容css阴影效果(ie滤镜) 1.Shadow,阴影 .shadow { -moz-box-shadow: 3px 3px 4px #000; -webkit-box-shadow: 3px 3px 4px #000; box-sha...

前端老手
39分钟前
4
0
NiushopB2C开源商城功能列表说明:

B2C单商户免费版:PC商城+微商城 B2C单商户标准版:PC商城+微商城组合套餐+阶梯优惠核销功能 B2C单商户企业版:PC商城+微商城拼团+组合套餐阶梯优惠+核销功能 B2C单商户分销版:PC商城+微商城...

niushop-芳
41分钟前
4
0
图片如何转GIF图片呢

如何将生活中拍摄的好玩有趣的图片制作成GIF动图呢?相信很多小伙伴都不知道要如何制作,其实制作方法非常的简单,下面分享一个图片转GIF动图的方法,希望这个方法能够帮助大家在与好友斗图时...

白米稀饭2019
48分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部