【问题标题】:awk search variable for variableawk 搜索变量的变量
【发布时间】:2019-03-18 05:17:43
【问题描述】:

我正在尝试从用户输入的文件中的一行中获取一个字符串。

它应该输出这样的名称:Tharahan Muthu
从这样的一串字母中: muthu:x:14232:504:Tharahan Muthu:/home/staff/muthu:/bin/bash
名称始终是第 5 和第 6 个元素。

它工作正常,直到 awk 行,之后它不会打印任何东西。

#! /bin/bash

clear
echo "Type your n number"
read name
var1=$(grep -n $name /etc/passwd)
awk -v var="$var1" -F "[: ]" '/$0~var/{print $5" " $6 }' /etc/passwd

编辑:修复了输入 var="$var1" 的错字 var="$var2"

【问题讨论】:

标签: linux awk


【解决方案1】:

您的awk 模式语法不正确

awk -F: -v var="$var2" '$0~var{print $5}' /etc/passwd

【讨论】:

    【解决方案2】:

    感谢所有快速回答!

    我会先澄清问题,然后再解决问题。

    文件/etc/passwd 包含数千人的列表,每行一个人。 在该行中,有多个字段:他们的用户名、他们的全名和各种数字,都用冒号分隔。每一行的所有字段都在相同的位置(全名总是在第 5 位)

    我想使用 grep 来存储用户名所在的行,然后使用 awk 在该行中查找全名。

    我对 bash 很陌生,所以我完全忘记了管道,这对自己来说太复杂了。


    解决方案:

    clear
    echo "Please Enter Username:";<br>
    read UNAME;<br>
    grep $UNAME /etc/passwd | awk -F":" '{print "Full Name: " $5}'
    exit 0
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多