AWK 适用于模式搜索和处理。该脚本运行以搜索一个或多个文件以识别匹配模式以及所述模式是否执行特定任务。在本指南中,我们将了解 AWK Linux 命令并了解它的功能。
- 逐行扫描文件
- 将每个输入行拆分为字段
- 将输入行和字段与模式进行比较
- 对匹配行执行指定操作
$ awk options 'selection _criteria {action }' input-file > output-file
To demonstrate more about AWK usage, we are going to use the text file called file.txt
1st column => Item, 2nd column => Model 3rd column => Country 4th column => Cost
要打印第二列和第三列,请执行以下命令。
$ awk '{print $2 "\t" $3}' file.txt
Output ![Awk Print Second And Third Column](https://journaldev.nyc3.digitaloceanspaces.com/2019/01/awk-print-second-anf-third-column-1.png)
如果您想列出文件中的所有行和列,请执行
$ awk ' {print $0}' file.txt
Output ![Awk Print All Lines](https://journaldev.nyc3.digitaloceanspaces.com/2019/01/awk-print-all-lines.png)
如果要打印与特定模式匹配的行,语法如下所示
$ awk '/variable_to_be_matched/ {print $0}' file.txt
例如,要匹配所有带有字母“o”的条目,语法将是
$ awk '/o/ {print $0}' file.txt
Output
To match all entries with the letter ‘e’
$ awk '/e/ {print $0}' file.txt
Output ![Awk Matching Lines With E](https://journaldev.nyc3.digitaloceanspaces.com/2019/01/awk-matching-lines-with-e.png)
当 AWK 找到模式匹配时,该命令将执行整个记录。您可以通过发出仅显示某些字段的指令来更改默认值。例如:
$ awk '/a/ {print $3 "\t" $4}' file.txt
The above command prints the 3rd and 4th columns where the letter ‘a’ appears in either of the columns Output ![Awk Matching Column](https://journaldev.nyc3.digitaloceanspaces.com/2019/01/awk-matching-column-with-a-PNG.png)
您可以使用 AWK 来计算并打印每个模式匹配的行数。例如,下面的命令计算匹配模式出现的实例数
$ awk '/a/{++cnt} END {print "Count = ", cnt}' file.txt
Output ![Count Columns Matching a pattern](https://journaldev.nyc3.digitaloceanspaces.com/2019/01/count-columns-matching-a-criteria.png)
AWK 有一个内置的长度函数,可以返回字符串的长度。命令 $0 变量存储整行,并且在没有正文块的情况下,将采取默认操作,即打印操作。因此,在我们的文本文件中,如果一行超过 18 个字符,则比较结果为 true,并且该行将按如下所示打印。
$ awk 'length($0) > 20' file.txt
Output ![Print Lines With More Or Less Characters](https://journaldev.nyc3.digitaloceanspaces.com/2019/01/print-lines-with-more-or-less-characters.png)
如果您希望保存结果的输出,请使用 > 重定向运算符。例如
$ awk '/a/ {print $3 "\t" $4}' file.txt > Output.txt
您可以使用 cat 命令验证结果,如下所示
$ cat output.txt
Output ![Awk Redirect Output](https://journaldev.nyc3.digitaloceanspaces.com/2019/01/awk-redirect-output.png)
AWK 是另一个简单的编程脚本,可用于操作文档中的文本或执行特定功能。共享命令是您还不知道或遇到的一些或许多命令。