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 变量。

相关文章
|
4天前
|
算法 数据挖掘 Linux
探索Linux中的awk命令:强大的文本分析工具
探索Linux中的`awk`命令,一个强大的文本分析工具,用于模式扫描、数据提取与报告生成。本文介绍`awk`的用途、工作原理、特点及应用示例。`awk`基于"模式-动作"框架,从输入数据中匹配模式并执行相应操作。其特点包括:强大的文本处理能力、灵活的I/O及简洁的语法。示例涵盖了打印特定行、处理字段、计算统计值等场景。使用`awk`时要注意理解输入数据、测试脚本、优化性能和添加注释。深入学习以提升数据处理技能。
|
10天前
|
Ubuntu Java Linux
Linux centos7 ubuntu 一键安装Java JDK 脚本 shell 脚本
Linux centos7 ubuntu 一键安装Java JDK 脚本 shell 脚本
|
10天前
|
Ubuntu Shell Linux
linux shell 后台执行脚本的方法 脚本后台运行 后台运行程
linux shell 后台执行脚本的方法 脚本后台运行 后台运行程
|
10天前
|
监控 Shell Linux
shell linux中用shell写一个占用CPU的脚本
shell linux中用shell写一个占用CPU的脚本
|
10天前
|
Shell Linux
shell linux中shell脚本编写俄罗斯方块
shell linux中shell脚本编写俄罗斯方块
|
11天前
|
Shell Linux Perl
Linux shell脚本sed使用
Linux shell脚本sed使用
|
11天前
|
Shell Linux
linux shell 脚本实现:根据文件内容中的每行分隔符放入数组,根据规则打印日志并重新创建目录 备份文件
linux shell 脚本实现:根据文件内容中的每行分隔符放入数组,根据规则打印日志并重新创建目录 备份文件
|
11天前
|
Shell Linux BI
linux shell脚本中 if 条件判断
linux shell脚本中 if 条件判断
|
11天前
|
Shell Linux
linux shell脚本字符串 字段分隔符 存入数组 根据下标取值
linux shell脚本字符串 字段分隔符 存入数组 根据下标取值
|
11天前
|
Shell Linux
linux shell 脚本中变量截取
linux shell 脚本中变量截取