awk命令是一种强大的方法来处理或分析文本文件。特别是,它分析数据文件,由行和列(行)。简单的awk命令可以从运行命令行。更复杂的任务应该写成awk程序(称为awk脚本)到一个文件。
AWK基础知识
awk命令的基本格式是这样的:
awk}{行动模式的输入文件>输出文件
这意味着:每一行输入文件;如果行包含模式,应用行动的线和写作产生的输出文件。如果省略该模式,操作应用于所有行。例如:
awk table1{打印5美元}。txt > output1.txt
上述声明以第五列的每一行的元素并写一行在输出文件中“output.txt。”的variable '$4' refers to the fourth column. Similarly, you can access the first, second, and third column, with $1, $2, $3, etc. By default, columns are assumed to be separated by spaces or tabs (so-called white space). So, if the input file "table1.txt" contains these lines:
1,贾斯汀·汀布莱克、标题545,价格7.30美元
2、泰勒·斯威夫特723年冠军,价格7.90美元
3,米克•贾格尔、标题610,价格7.90美元
4,Lady Gaga,标题118,价格7.30美元
5、约翰尼·卡什482年冠军,价格6.50美元
335年6、猫王、标题,价格7.30美元
271年7日,约翰·列侬、标题,价格7.90美元
8日,迈克尔·杰克逊,373年冠军,价格5.50美元
然后命令会写以下行输出文件“output1.txt”:
545年,
723年,
610年,
118年,
482年,
335年,
271年,
373年,
如果列分隔符是空格或制表符以外的东西,比如一个逗号,您可以指定在awk语句如下:
awk - f,表1}{打印3美元。txt > output1.txt
这将选择元素从第三列的每一行,如果列被认为是由一个逗号分开。因此输出,在这种情况下,将:
标题545
标题723
标题610
标题118
标题482
标题335
标题271
标题373
在AWK条件表达式
花括号内的语句列表(“{”、“}”)被称为块。如果你把一个条件表达式面前的一块,块内的语句将执行只有在条件是正确的。
awk的7美元= = " \ $ 7.30 "{打印3美元}’table1.txt
在这种情况下,条件是7美元= = \ 7.30美元,这意味着元素列7等于7.30美元。前面的反斜杠美元符号是用来防止系统解释7美元作为一个变量,而是把美元符号。
这awk语句打印出每一行的元素在第三列,列7“7.30美元”。
您还可以使用正则表达式的条件。例如:
awk / 30 /{打印3美元}的table1.txt
两个斜杠之间的字符串(“/”)是正则表达式。在这种情况下,它只是一个字符串“30”。This means if a line contains the string "30", the system prints out the element at the 3rd column of that line. The输出在上面的例子中是:
贾斯汀,
嘎嘎,
普雷斯利,
在AWK中执行计算
如果表元素是数字,awk可以运行计算他们在这个例子:
awk的{print(2 * 3)美元+ 7美元}”
除了变量访问元素的当前行($ 1、$ 2等),还有一个变量$ 0指完整的行(行)和变量NF字段的数量。
您还可以定义新的变量,在这个例子中:
awk的{金额= 0;(col = 1;坳< = NF;坳+ +)+ = $坳总和;打印总和;}'
这个计算并打印每一行的所有元素的和。
Awk语句经常结合sed命令。