这篇文章是关于如何让awk使用Shell变量。我觉得边肖挺实用的,就分享给大家参考,和边肖一起来看看。
awk使用外壳变量有两种可能的方式:
1. 使用 Shell 引用
让我们用一个例子来演示如何在awk命令中使用外壳引用而不是外壳变量。在本例中,我们希望在文件/etc/passwd中搜索用户名,过滤并输出用户的帐户信息。
因此,我们可以编写一个包含以下内容的test.sh脚本:
#!/bin/bash###读取用户名read-p '请输入用户名:' username###在/etc/passwd中搜索用户名,然后在屏幕上输出详细信息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 xtest.sh$。/text.sh运行脚本后,它会提示您输入用户名,然后您输入合法用户名并按回车键。您将从/etc/passwd文件中看到详细的用户帐户信息,如下图所示:
在密码文件中查找用户名的Shell脚本。
2. 使用 awk 进行变量赋值
与上面介绍的方法相比,这种方法更简单、更好。考虑到上面的例子,我们可以运行一个简单的命令来完成同样的任务。在这个方法中,我们使用-v选项将shell变量的值赋给awk变量。
首先,创建一个shell变量username,然后给它一个我们想要在/etc/passwd文件中搜索的名称。
Username='aaronkilik '然后输入以下命令并按enter键:
# cat/etc/passwd | awk-vname=' $ username ' ' $ 0 ~ name { print $ 0 } '
使用awk在密码文件中查找用户名。
上述命令的描述:
声明变量的-v: awk选项之一。
Username:是一个shell变量。
Name:是一个awk变量。
让我们仔细看看awk脚本“$0 ~ name {print $0}”中的$0 ~ name。请记住,当我们在awk系列的第四部分中引入awk比较运算符时,value ~ pattern是比较运算符之一,这意味着如果value与pattern匹配,它将返回true。
通过管道传输到awk的cat命令的输出($0)与模式(aaronkilik)匹配,该模式是我们在/etc/passwd、* * *中搜索的名称,比较操作返回true。接下来,屏幕上将输出一行包含用户帐户信息的内容。
感谢阅读!我希望这篇关于“如何让awk使用Shell变量”的文章就在这里。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/50271.html