首先,你需要先了解awk的工作原理:
1. awk读取输入文件一次一行。
2 .对于每一行,它匹配在给定的顺序模式,如果匹配,执行相应的动作。
3 .如果没有模式匹配,将执行任何行动。
4 .在上面的语法,无论是搜索模式,或行动是可选的,但不能同时。
5 .如果没有给出搜索模式,然后awk要执行每一行输入给定的行动。
6 .如果没有给出动作,打印,这是默认的操作与模式相匹配的所有行。7。空出的任何行动括号什么都不做。它不会执行默认的打印操作。
8 .中的每个行动的声明应该用分号分隔。让我们创建employee.txt文件,其中有
<强>首先,你需要先了解awk的工作原理:强>
1. awk读取输入文件一次一行。
2 .对于每一行,它匹配在给定的顺序模式,如果匹配,执行相应的动作。
3 .如果没有模式匹配,将执行任何行动。
4 .在上面的语法,无论是搜索模式,或行动是可选的,但不能同时。
5 .如果没有给出搜索模式,然后awk要执行每一行输入给定的行动。
6 .如果没有给出动作,打印,这是默认的操作与模式相匹配的所有行。
7 .空出的任何行动括号什么都不做。它不会执行默认的打印操作。
8 .中的每个行动的声明应该用分号分隔。
<强>让我们创建员工。txt文件,其中有以下内容,这将是在使用
下文提到的例子。强>
猫employee.txt美元 100年托马斯经理销售5000美元 200年杰森开发者技术5500美元 300年Sanjay Sysadmin技术7000美元 400年尼莎经理营销9500美元 500兰迪DBA技术6000美元
<强> Awk的范例1. Awk的默认行为强>
默认情况下的awk打印文件的每一行。
1234567 美元awk employee.txt{印刷;} 100年托马斯经理销售5000美元 200年杰森开发者技术5500美元 300年Sanjay Sysadmin技术7000美元 400年尼莎经理营销9500美元 500兰迪DBA技术6000美元
在上面的例子中模式中没有给出,因此,是适用于所有的行。
行动与任何参数的打印输出默认情况下,输出整行。
<强> Awk的范例2。打印与模式匹配的行。强>
<强> 1234美元awk/托马斯/强>
比;尼莎/employee.txt 100年托马斯经理销售5000美元 400年尼莎经理营销9500美元
在上面的例子,它打印的“托马斯”或“尼莎”匹配的所有行。它有两种模式。
<强> Awk的范例3。只打印特定的字段& # 8203;& # 8203;。强>
awk有内置的变量。对于每一个记录,即行,分隔空白字符分隔记录默认情况下,它存储在$ n个变量。如果该行有4个词,它会被存储在1美元,<数学> 数学> <语义> 语义>
12345678910111213美元awk的{打印2美元,5美元;}’employee.txt 托马斯5000美元 杰森5500美元 桑杰7000美元 尼莎9500美元 兰迪6000美元
$ awk '{打印2美元,美元NF;}’employee.txt 托马斯5000美元 杰森5500美元 桑杰7000美元 尼莎9500美元 兰迪6000美元
<强> Awk范例4。初始化和最终行动强>
Awk两个重要的模式,由关键词开始和结束标识
的语法:
开始{行动}
{行动}#行动everyline在文件
结束{行动}
#是评论在Awk
这是一个例子
12345678910111213
<强> $ awk '开始{打印”的名字\ tDesignation \ tDepartment \ tSalary”;} 强>
比;{打印2美元,“\ t”, 3美元,“\ t”, 4美元,“\ t”, NF美元;} 比;结束{打印报告生成\ n - - - - - - - - - - - - - - - -”; 比;}’employee.txt 名称指定部门工资 托马斯经理销售5000美元 杰森5500美元开发技术 桑杰Sysadmin技术7000美元 尼莎经理营销9500美元 兰迪DBA技术6000美元 报告生成 - - - - - - - - - - - - - - - -
在上面的例子,它打印出的报告和最后文件的标题