我正在尝试从用户输入的文件中的一行中获取字符串。
它应该输出如下名称: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”
时出现的错字答案 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