美文网首页Linux 工具与开发
Linux|如何允许 awk 使用 Shell 变量

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

作者: 数据科学工厂 | 来源:发表于2024-05-14 14:51 被阅读0次

    引言

    当我们编写 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 脚本“{ print0 }”之外。

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

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

    相关文章

      网友评论

        本文标题:Linux|如何允许 awk 使用 Shell 变量

        本文链接:https://www.haomeiwen.com/subject/otbmfjtx.html