利用 Linux 掌握 awk 命令的妙用(linux命令awk)
熟练掌握 Linux 中 awk 命令可以给我们带来很多便利,awk 具有处理海量数据文本文件的强大功能,并拥有很强的文本格式处理功能,具体有哪些妙用呢?我们可以一起来看看吧。
首先,我们先来介绍 awk 命令的基本语法结构:
1. awk ‘模式 {动作}’ 输入文件
其中,模式用于指定特定的内容,动作则定义了当匹配到特定的模式时,要执行的命令,输入文件则指定了需要处理的文档,可以是文件或目录,也可以是管道程序输出的文本,具体用法如下:
//例如,想要按行打印所有四位数
$ awk ‘/^[0-9][0-9][0-9][0-9]$/ {print $0}’ filename
我们可以利用 awk 命令将文本的每一行的字段提取出来,例如:
//读取文件中的某一行
$ awk ‘NR==4 {print}’ filename
//提取某一行的前几个字段
$ awk ‘BEGIN {FS=” “; OFS=” “} {print $1, $2}’ filename
//计算某字段的总和
$ awk ‘{sum+=$1} END {print sum}’ filename
//根据某字段分类输出
$ awk ‘$1==”foo” {print $0}’ filename
此外,awd 还可以用于文本格式转换,比如我们可以将大量 CSV 格式文本转换为 JSON 格式,再如将每一行作为数组元素进行输出等,详细示例可以参考以下代码:
//CSV 转换为 JSON
$ awk ‘BEGIN {
FS = “,”;
OFS = “, “
print “{“
}
{
if (NR > 1)
{
for (i=1; i
{
printf “\”%s\”: \”%s\””, $i, $(i+1);
if (i
{
printf “%s”, OFS
}
}
printf “}”
}
}’ filename
另外,awd 的另一大特性是可以实现简单的程序分析,我们可以实现一些简单的条件判断和循环判断,也可以利用函数实现更复杂的程序分析,具体用法如下:
//读取文件中的某一行,如果所读行的字段和预设值相同,打印
$ awk ‘NR==4 {
if ($1 == “foo”)
}’ filename
以上就是 awk 命令妙用的简单介绍,awk 命令可以给我们带来很多以Linux 管理工作的便利,希望本文對你有所幫助。