Linux|如何允许 awk 使用 Shell 变量

简介: Linux|如何允许 awk 使用 Shell 变量

引言

当我们编写 shell 脚本时,我们通常会在脚本中包含其他较小的程序或命令,例如 awk 操作。就 Awk 而言,我们必须找到将一些值从 shell 传递到 Awk 操作的方法。

这可以通过在 Awk 命令中使用 shell 变量来完成,在本文中,我们将学习如何允许 Awk 使用 shell 变量,这些变量可能包含我们想要传递给 Awk 命令的值。

可能有两种方法可以让 Awk 使用 shell 变量:

1. 使用 Shell 引用

让我们看一个示例来说明如何实际使用 shell 引用来替换 Awk 命令中 shell 变量的值。在这个例子中,我们要在文件/etc/passwd中搜索用户名,过滤并打印用户的帐户信息。

因此,我们可以编写一个test.sh脚本,内容如下:

#!/bin/bash

#read user input
read -p "Please enter username:" username

#search for username in /etc/passwd file and print details on the screen
cat /etc/passwd | awk "/$username/ "' { print $0 }'

此后,保存文件并退出。上面test.sh脚本中awk命令的解释:

cat /etc/passwd | awk "/$username/ "' { print $0 }'

"/$username/ " – shell 引用用于替换 Awk 命令中 shell 变量 username 的值。 username 的值是要在文件 /etc/passwd 中搜索的模式。请注意,双引号位于 Awk 脚本“{ print $0 }”之外。

然后使脚本可执行并运行它,如下所示:

chmod  +x  test.sh
./text.sh

运行脚本后,系统将提示您输入用户名,输入有效的用户名并按 Enter 键。您将从 /etc/passwd 文件中查看用户的帐户详细信息,如下所示:

2. 使用awk的变量赋值

与上面的方法一相比,这种方法更简单、更好。考虑上面的例子,我们可以运行一个简单的命令来完成这项工作。在此方法下,我们使用 -v 选项将 shell 变量分配给 Awk 变量。

首先,创建一个 shell 变量 username 并为其指定我们要在 /etc/passswd 文件中搜索的名称:

username="aaronkilik"

然后输入以下命令并按 Enter 键:

cat /etc/passwd | awk -v name="$username" ' $0 ~ name {print $0}'

上述命令的解释:

  • -v – 用于声明变量的 awk 选项
  • username – 是 shell 变量
  • name – 是 Awk 变量

让我们仔细看看 Awk 脚本中的 $0 ~ name ,'$0 ~ name {print $0}'。通过管道传输到 Awk 的 cat 命令的输出($0)与我们在 /etc/passwd 中搜索的名称模式 (aaronkilik) 匹配,因此,比较操作为 true。然后,包含用户帐户信息的行将打印在屏幕上。

总结

我们已经介绍了 Awk 功能的一个重要部分,它可以帮助我们在 Awk 命令中使用 shell 变量。很多时候,您会在 shell 脚本中编写小型 Awk 程序或命令,因此,您需要清楚地了解如何在 Awk 命令中使用 shell 变量。

相关文章
|
2天前
|
Shell Linux
Linux Shell 脚本入门教程:开启你的自动化之旅
Shell是一种计算机程序,它充当了用户与操作系统之间的接口。在Linux系统中,Shell允许用户通过命令行界面(CLI)来控制计算机。Shell脚本则是一种使用Shell语言编写的脚本,它可以自动执行一系列的命令,帮助用户实现任务自动化,提高工作效率。
|
12天前
|
存储 Linux BI
Linux 三剑客 grep、sed、awk
Linux三剑客`grep`、`sed`和`awk`是强大的文本处理工具。`grep`用正则表达式搜索匹配行;`sed`是流式编辑器,处理文本流而不直接修改原文件;`awk`则用于灵活的文本分析和报告生成。例如,`grep`可查找匹配模式,`sed`可以删除文件内容,而`awk`能提取特定字段。通过组合使用,它们能高效解决复杂文本任务。
18 1
|
3天前
|
监控 Unix Linux
Linux中AWK命令的高级应用与案例分析
Linux中AWK命令的高级应用与案例分析
|
4天前
|
Shell Linux
Linux环境变量之shell中export定义全局变量和echo 变量的区别
Linux环境变量之shell中export定义全局变量和echo 变量的区别
|
5天前
|
监控 Unix Linux
Linux中AWK命令的高级应用与案例分析
Linux中AWK命令的高级应用与案例分析
|
9天前
|
监控 Unix Shell
探秘GNU/Linux Shell:命令行的魔法世界
探秘GNU/Linux Shell:命令行的魔法世界
12 0
|
9天前
|
机器学习/深度学习 Unix Java
技术笔记:Linux之Shell脚本编程(一)
技术笔记:Linux之Shell脚本编程(一)
14 0
|
11天前
|
Shell Linux
【linux】进程替换的应用|shell解释器的实现
【linux】进程替换的应用|shell解释器的实现
10 0
|
17天前
|
存储 Shell 开发者
Shell 变量详解:如何定义、使用和管理
**Shell脚本中,变量是核心元素,用于暂存数据。变量默认为字符串,赋值时等号两侧无空格。命名遵循:数字、字母、下划线,以非数字开头。常用特殊变量如 `$0` (脚本名),`$#` (参数个数)。定义变量可使用单引号(不解析变量)、双引号(解析变量)或不加引号(注意空格)。使用花括号明确变量边界,`readonly` 则可设定只读变量,`unset` 删除变量。实践这些概念以加深理解。**
22 0
|
9月前
|
Unix Shell Linux