Linux AWK命令使用教程介绍该awk
命令是一种 Linux 工具和编程语言,允许用户处理和操作数据并生成格式化报告。该工具支持高级文本处理的各种操作,并有助于表达复杂的数据选择。
在本教程中,你将了解Linux中的AWK命令及示例,包括awk
命令的作用以及如何使用它。
先决条件
- 一个运行 Linux 的系统。
- 访问终端窗口。
awk
命令的语法是:awk [
options] 'selection_criteria {action}' input-file > output-file
可用的选项是:
选项 | 描述 |
---|---|
-F [separator] | 用于指定文件分隔符。默认分隔符是一个空格。 |
-f [filename] | 用于指定包含awk
脚本的文件
。awk
从指定的文件中读取
程序源,而不是第一个命令行参数。 |
-v | 用于分配变量。 |
AWK 命令如何工作?该
awk
命令的主要目的是使信息检索和文本操作在 Linux 中易于执行。该命令通过按顺序扫描一组输入行并搜索与用户指定的模式匹配的行来工作。对于每个模式,用户可以指定要在与指定模式匹配的每一行上执行的操作。因此,使用
awk
,用户可以轻松处理复杂的日志文件并输出可读的报告。AWK 操作
【Linux中的AWK命令及示例(如何使用AWK())】
awk
允许用户对输入文件或文本执行各种操作。一些可用的操作是:- 逐行扫描文件。
- 将输入行/文件拆分为字段。
- 将输入行或字段与指定的模式进行比较。
- 在匹配的行上执行各种操作。
- 格式化输出行。
- 执行算术和字符串运算。
- 在输出上使用控制流和循环。
- 根据指定的结构转换文件和数据。
- 生成格式化报告。
该命令提供基本的控制流语句(
if-else
,
while
,
for
,
break
),还允许用户使用大括号对语句进行分组{}
。- if-else
if-elseif
else
例如:
awk -F ',' '{if($2==$3){print $1","$2","$3} else {print "No Duplicates"}}' answers.txt
文章图片
输出显示线中存在的重复和国家没有重复,如果有行内没有重复的答案。
- while
while
只要指定的条件为真,该语句就会重复执行目标语句。这意味着它的运行方式与 C 编程语言中的一样。如果条件为真,则执行循环体。如果条件为假,则 awk
继续执行。例如,以下语句指示
awk
每行打印一个所有输入字段:awk '{i=0;
while(i<
=NF) { print i ":"$i;
i++;
}}' employees.txt
文章图片
- for
for
语句也像 C 一样工作,允许用户创建需要执行特定次数的循环。Linux AWK命令用法示例:
awk 'BEGIN{for(i=1;
i<
=10;
i++) print "The square root of", i, "is", i*i;
}'
文章图片
上面的语句将 的值增加
i
一直到达到十并计算i
每次的平方根。注意:
if
,
while
or条件部分的表达式for
可以包含关系运算符,例如<
, , >
=, ==
(等于)和!=
(不等于)。表达还可以包括与匹配运算符正则表达式匹配~
和!~
,逻辑运算符||, &
&
,和!
。运算符用括号分组。- break
break
语句立即从封闭的while
or 中退出for
。要开始下一次迭代,请使用该continue
语句。该
next
语句指示
awk
跳到下一条记录并从顶部开始扫描模式。该exit
语句指示
awk
输入已结束。以下是该
break
语句的示例:awk 'BEGIN{x=1;
while(1) {print "Example";
if ( x==5 ) break;
x++;
}}'
文章图片
上面的命令在 5 次迭代后中断循环。
注意:该
awk
工具允许用户在AWK
程序中放置注释。注释以行#
尾开始和结束。AWK 模式
Linux中的AWK命令及示例:在操作前插入一个模式
awk
作为选择器。选择器决定是否执行一个动作。以下表达式可以用作模式:- 常用表达。
- 算术关系表达式。
- 字符串值表达式。
- 上述表达式的任意布尔组合。
注意:了解如何使用grep 命令搜索字符串或模式。
正则表达式模式正则表达式模式是最简单的表达式形式,其中包含用斜杠括起来的字符串。它可以是一系列字母、数字或两者的组合。
在以下示例中,程序输出所有以“A”开头的行。如果指定的字符串是更大单词的一部分,它也会被打印出来。
awk '$1 ~ /^A/ {print $0}' employees.txt
文章图片
Linux AWK命令使用教程:关系表达模式另一种类型的
awk
模式是关系表达模式。关系表达式模式涉及使用以下任何关系运算符:<
、<
=、==、!=、>
=和>
。Linux如何使用AWK命令?以下是
awk
关系表达式的示例 :awk 'BEGIN { a = 10;
b = 10;
if (a == b) print "a == b" }'
文章图片
范围模式Linux AWK命令用法示例:范围模式是由以逗号分隔的两个模式组成的模式。范围模式对模式一和模式二出现之间的每一行执行指定的操作。
例如:
awk '/clerk/, /manager/ {print $1, $2}' employees.txt
文章图片
上面的模式指示
awk
打印包含关键字“clerk”和“manager”的所有输入行。特殊表达模式特殊的表达式模式包括
BEGIN
和END
,表示程序初始化和结束。在BEGIN
处理第一条记录之前,该模式匹配输入的开头。END
在处理完最后一条记录后,该模式匹配输入的结尾。例如,你可以指示
awk
在流程开始和结束时显示一条消息:awk 'BEGIN { print "List of debtors:" };
{print $1, $2};
END {print "End of the debtor list"}' debtors.txt
文章图片
组合模式Linux中的AWK命令及示例:该
awk
命令允许用户使用逻辑运算符组合两个或多个模式。组合模式可以是模式的任何布尔组合。组合模式的逻辑运算符是:||
(或者)& &
(和)!
(不是)
awk '$3 > 10 &
&
$4 <
20 {print $1, $2}' employees.txt
文章图片
输出打印第三个字段大于 10 且第四个字段小于 20 的记录的第一个和第二个字段。
Linux AWK命令使用教程:AWK 变量
该
awk
命令具有内置字段变量,可将输入文件分成称为fields 的单独部分。的awk
受让人以下变量的每个数据字段:$0
. 用于指定整行。$1
. 指定第一个字段。$2
. 指定第二个字段。- 等等。
awk
变量是:NR
. 计算输入记录的数量(通常是行)。该awk
命令对文件中的每个记录执行一次模式/操作语句。
awk '{print NR,$0}' employees.txt
文章图片
该命令在输出中显示行号。
NF
. 计算当前输入记录中的字段数并显示文件的最后一个字段。
awk '{print $NF}' employees.txt
文章图片
FS
. 包含用于分隔输入行上的字段的字符。默认分隔符是空格,但你可以使用FS
将分隔符重新分配给另一个字符(通常在 中BEGIN
)。
:/
awk -FS 'BEGIN{FS=":";
OFS="-"} {print $0}' /etc/passwd
文章图片
RS
. 存储当前记录分隔符。默认输入行是输入记录,这使换行符成为默认记录分隔符。如果输入是逗号分隔文件 (CSV),则该命令很有用。
awk 'BEGIN {FS="-";
RS=",";
OFS=" owes Rs. "} {print $1,$2}' debtors.txt
文章图片
注意:我们首先使用cat 命令显示文件的内容,然后使用
AWK
.OFS
. 存储输出字段分隔符,打印时分隔字段。默认分隔符是一个空格。每当打印的文件有几个用逗号分隔的参数时,OFS
就会在每个参数之间打印值。
awk 'OFS=" works as " {print $1,$3}' employees.txt
文章图片
AWK 动作
Linux AWK命令用法示例:该
awk
工具遵循包含模式-动作对的规则。动作由括在花括号中的语句组成,{}
其中包含表达式、控制语句、复合语句、输入和输出语句以及删除语句。上面的部分描述了这些声明。awk
使用以下语法创建
脚本:awk '{action}'
例如:
awk '{print "How to use the awk command"}'
文章图片
这个简单的命令指示
awk
每次运行命令时打印指定的字符串。使用Ctrl+D终止程序。如何使用 AWK 命令 - 示例Linux中的AWK命令及示例:除了操作数据和生成格式化输出之外,
awk
还有其他用途,因为它是一种脚本语言,而不仅仅是一种文本处理命令。本节解释了 的替代用例 awk
。- 计算。该
awk
命令允许你执行算术计算。例如:
df | awk '/\/dev\/loop/ {print $1"\t"$2 + $3}'
文章图片
在此Linux AWK命令用法示例中,我们通过管道输入df 命令并使用报告中生成的信息来计算名称中仅包含/dev和/loop的已挂载文件系统可用和使用的总内存。
生成的报告在输出的第二列和第三列中显示了/dev和/loop文件系统的内存总和
df
。- 过滤。该
awk
命令允许你通过限制行的长度来过滤输出。例如:
awk 'length($0) > 8' /etc/shells
文章图片
Linux如何使用AWK命令?在此示例中,我们运行/etc/shells系统文件
awk
并过滤输出以仅包含包含超过 8 个字符的行。- 监控。通过管道输入
< strong> ps< /strong>
命令检查某个进程是否在 Linux 中运行。例如:
ps -ef | awk '{ if($NF == "clipboard") print $0}'
文章图片
输出将打印在你的机器上运行的所有进程的列表,最后一个字段与指定的模式匹配。
- 计数。你可以使用
awk
计算一行中的字符数并获取结果中打印的数字。例如:
awk '{ print "The number of characters in line", NR,"=" length($0) }' employees.txt
文章图片
Linux AWK命令使用教程总结阅读这个Linux中的AWK命令及示例教程后,你将了解该
awk
命令是什么以及如何在各种用例中有效地使用它。该
awk
命令也是一种脚本语言有许多用途,它是每一个的Linux用户必备的知识。将其用于强大的文本操作,也可用作脚本语言。推荐阅读
- SOAP与REST API有哪些区别(哪个更好?)
- Android拍照摄像方向旋转的问题 代码具体解释
- Android中的动画具体解释系列——飞舞的蝴蝶
- NHibernate3剖析(Mapping篇之ConfORM实战:概览)
- Android Studio,使用外部模拟器作为生成app调试的模拟器
- Android——使用 Intent传递类
- Android入门常见问题
- Android fragment onHiddenChanged方法具体解释
- Android 九宫格