awk-f命令_awk-f命令_awk命令

大家好!我是一个热衷于分享IT技术的up主。在这个公众号里,我将为大家带来最新、最实用的技术干货,从编程语言到前沿科技,从软件开发到网络安全。希望通过我的分享,能够帮助更多的小伙伴提升技术水平,共同成长!欢迎关注awk命令,一起探索科技的魅力吧!

在日常的工作中,无论是数据处理、日志分析,还是格式化输出,AWK命令都是不可或缺的利器。AWK是一种强大的文本处理工具,能让你轻松处理复杂的数据,提升工作效率。本文将为你介绍AWK的基本功能及一些实用场景,帮助你快速掌握这门工具。

awk-f命令_awk命令_awk-f命令

awk选项

awk 命令的使用方式如下:

awk options program file

awk 可以采用以下选项:

我们将了解如何使用awk处理文件和打印结果。

读取AWK脚本

要定义awk脚本,请使用用单引号括起来的大括号,如下所示:

awk '{print "Welcome to awk command tutorial "}'

如果您键入任何内容,它将返回我们提供的相同欢迎字符串。如下图所示:

awk命令_awk-f命令_awk-f命令

要终止程序,请按Ctrl+D。看起来很棘手awk命令,不要惊慌,最好的还没有到来。

使用变量

使用awk,可以处理文本文件。Awk为找到的每个数据字段分配一些变量:

在awk中,空格或制表符等空白字符是字段之间的默认分隔符。看看这个例子,看看awk是如何处理它的:

awk-f命令_awk-f命令_awk命令

上面的示例打印了每行的第一个单词。

有时某些文件中的分隔符不是空格或tab,而是其他内容。您可以使用–F选项指定它:

awk -F ':' '{print $1}' /etc/passwd

awk-f命令_awk命令_awk-f命令

此命令将打印文件中的第一个字段。我们使用冒号作为分隔符,因为文件使用它。

使用多个命令

要运行多个命令,请用分号分隔它们,如下所示:

root@didiplus:~# echo "Hello Tom" | awk '{$2="Adam"; print $0}'
Hello Adam

第一个命令使 $2字段等于Adam。第二个命令打印整行。

从文件中读取脚本

您可以在文件中键入awk脚本,并使用 -f 选项指定该文件。我们的文件包含以下脚本:

{print $1 " home at " $6}

 awk -F: -f testfile /etc/passwd

awk-f命令_awk命令_awk-f命令

在这里,我们从 /etc/打印用户名和他的主路径,当然分隔符是用大写的-F指定的,即冒号。

你可以像这样awk脚本文件:

{
text = $1 " home at " $6
print text  
}

awk预处理

如果您需要为结果创建标题或表头等。您可以使用BEGIN关键字来实现此目的。它在处理数据之前运行:

awk 'BEGIN {print "this Title"} {print $0}' myfile

执行上述代码输入如下图的结果:

awk-f命令_awk命令_awk-f命令

awk后处理

要在处理数据后运行脚本,请使用END关键字:

awk 'BEGIN {print "this Title"} {print $0} END {print "this footer"}' myfile

执行上述代码输出如下图的结果:

awk-f命令_awk命令_awk-f命令

这很有用,例如,您可以使用它来添加页脚。让我们将它们组合到一个脚本文件中:

BEGIN {
print "Users and thier corresponding home"
print " UserName t HomePath"
print "___________ t __________"
FS=":"
}
{
print $1 "  t  " $6
}
END {
print "The end"
}

首先,使用BEGIN关键字创建顶部部分。然后我们定义FS并在末尾打印页脚。

 awk -f myscript  /etc/passwd

awk-f命令_awk命令_awk-f命令

内置变量

我们看到数据字段变量$1,$2,$3等用于提取数据字段,我们还处理字段分隔符FS。

但这些并不是唯一的变量,还有更多的内置变量。

下面列出了一些内置变量:

默认情况下,OFS变量是空格,你可以设置OFS变量来指定你需要的分隔符:

awk 'BEGIN {FS=":";OFS="---"} {print $1,$6,$7}' /etc/passwd

awk-f命令_awk命令_awk-f命令

有时,字段的分布没有固定的分隔符。在这些情况下, 变量可以解决问题。

假设我们有以下内容:

1235.96521
927-8.3652
36257.8157

awk 'BEGIN{FIELDWIDTHS="3 4 3"}{print $1,$2,$3}' testfile

查看输出。输出字段为每行3个,每个字段长度都基于我们由分配的字段。

awk-f命令_awk命令_awk-f命令

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注