【编程】AWK文本处理命令学习-文本处理利器

来源:互联网 发布:手机zip解压软件 编辑:程序博客网 时间:2024/06/06 00:53

awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。


Awk的范例1:默认情况下的awk打印文件的每一行。

$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 '{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的范例2:只打印特定的字段​​。

awk有内置的变量。对于每一个记录,即行,分隔空白字符分隔记录默认情况下,它存储在$ n个变量。如果该行有4个词,它会被存储在$ 1,$2,$ 3和$ 4。 $0表示整行。 NF是一个内置变量,它代表这一行有多少个被分隔的域.


$ awk '{print $2,$5;}' employee.txt
Thomas $5,000
Jason $5,500
Sanjay $7,000
Nisha $9,500
Randy $6,000

$ awk '{print $2,$NF;}' employee.txt
Thomas $5,000
Jason $5,500
Sanjay $7,000
Nisha $9,500
Randy $6,000


Awk的范例3:打印技术部门的雇员列表。
部门名称现在​​是第四个字段,所以需要检查与“Techology”的字符串,如果$4 匹配,则打印这一行,操作符〜是正则表达式比较。如果匹配的默认操作,即打印整行.


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


参考链接:

awk命令
http://man.linuxde.net/awk 

shell 里 awk print 的用法
http://blog.csdn.net/manchew/article/details/44892727 

awk print 学习
http://blog.csdn.net/andyxm/article/details/5964071 

linux awk命令详解 
http://www.cnblogs.com/xudong-bupt/p/3721210.html