shell 里 awk print 的用法详解
首先,你需要先了解awk的工作原理:
1。AWK读取输入文件一次一行。
2。对于每一行,它匹配在给定的顺序模式,如果匹配,执行相应的动作。
3。如果没有模式匹配,将执行任何行动。
4。在上面的语法,无论是搜索模式,或行动是可选的,但不能同时。
5。如果没有给出搜索模式,然后awk要执行每一行输入给定的行动。
6。如果没有给出动作,打印,这是默认的操作与模式相匹配的所有行。7。空出的任何行动括号什么都不做。它不会执行默认的打印操作。
8。中的每个行动的声明应该用分号分隔。让我们创建employee.txt文件,其中有
首先,你需要先了解awk的工作原理:
1。AWK读取输入文件一次一行。
2。对于每一行,它匹配在给定的顺序模式,如果匹配,执行相应的动作。
3。如果没有模式匹配,将执行任何行动。
4。在上面的语法,无论是搜索模式,或行动是可选的,但不能同时。
5。如果没有给出搜索模式,然后awk要执行每一行输入给定的行动。
6。如果没有给出动作,打印,这是默认的操作与模式相匹配的所有行。
7。空出的任何行动括号什么都不做。它不会执行默认的打印操作。
8。中的每个行动的声明应该用分号分隔。
让我们创建employee.txt文件,其中有以下内容,这将是在使用
下文提到的例子。
$catemployee.txt 100ThomasManagerSales$5,000 200JasonDeveloperTechnology$5,500 300SanjaySysadminTechnology$7,000 400NishaManagerMarketing$9,500 500RandyDBATechnology$6,000
Awk的范例1。awk的默认行为
默认情况下的awk打印文件的每一行。
1234567 $awk'{print;}'employee.txt 100ThomasManagerSales$5,000 200JasonDeveloperTechnology$5,500 300SanjaySysadminTechnology$7,000 400NishaManagerMarketing$9,500 500RandyDBATechnology$6,000
在上面的例子中模式中没有给出。因此,是适用于所有的行。
action与任何参数的打印输出默认情况下,输出整行.
Awk的范例2。打印与模式匹配的行。
1234$awk'/Thomas/
>/Nisha/'employee.txt 100ThomasManagerSales$5,000 400NishaManagerMarketing$9,500
在上面的例子,它打印的“Thomas”或“Nisha”匹配的所有行。它有两种模式。
Awk的范例3。只打印特定的字段。
awk有内置的变量。对于每一个记录,即行,分隔空白字符分隔记录默认情况下,它存储在$n个变量。如果该行有4个词,它会被存储在$1,
12345678910111213$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范例4.初始化andFinalAction
Awk两个重要的pattern,由关键词BEGINandEND标识
Syntax:
BEGIN{Actions}
{ACTION}#Actionforeverylineinafile
END{Actions}
#isforcommentsinAwk
这是一个例子
12345678910111213
$awk'BEGIN{print“Name\tDesignation\tDepartment\tSalary”;}
>{print$2,"\t",$3,"\t",$4,"\t",$NF;} >END{print"ReportGenerated\n--------------"; >}'employee.txt NameDesignationDepartmentSalary ThomasManagerSales$5,000 JasonDeveloperTechnology$5,500 SanjaySysadminTechnology$7,000 NishaManagerMarketing$9,500 RandyDBATechnology$6,000 ReportGenerated --------------
在上面的例子,它打印出的报告和最后文件的标题
Awk的范例6。打印技术部门的雇员列表。
部门名称现在是第四个字段,所以需要检查与“Techology”的字符串,如果$4匹配,则打印这一行
$awk‘$4~/Technology/'employee.txt
200JasonDeveloperTechnology$5,500
300SanjaySysadminTechnology$7,000
500RandyDBATechnology$6,000
操作符〜是正则表达式比较。如果匹配的默认操作,即打印整行.
Awk的范例7。打印在技术部门的雇员人数
下面的例子,检查department是否是Technology,如果是则Action中,只增加变量的计数.这个变量在BEGIN中被初始化为0
123456
$awk'BEGIN{count=0;} $4~/Technology/{count++;} END{print"NumberofemployeesinTechnologyDept=",count;}'employee.txt NumberofemployeesinTehcnologyDept=3
在END中打印出这个变量,就是Technology部门的员工数目
总结
到此这篇关于shell里awkprint的用法详解的文章就介绍到这了,更多相关shellawkprint用法内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。