如何编写AWK命令和脚本

命令,语法,和例子

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命令。

这个页面是有用吗?