awk搜索变量以获取变量

时间:2018-10-13 00:53:27

标签: linux awk

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

它应该输出如下名称: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”

时出现的错字

2 个答案:

答案 0 :(得分:2)

您的awk模式语法不正确

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

答案 1 :(得分:0)

感谢所有快速解答!

我将首先阐明问题,然后继续解决。

文件/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