【发布时间】: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"
【问题讨论】:
-
您的目标到底是什么?从
/etc/passwd记录中获取与用户提供的正则表达式匹配的全名? -
您从 var1 更改为使用未定义的 $var2。您还要求输入一个数字,但似乎将输入视为名称。然后
grep -n给你一个你当作正则表达式的数字。目前尚不清楚您要做什么。