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