使用bash在第二列中搜索字符串



我正在尝试编写一个函数,该函数在第二列中查找姓氏(从用户输入)并将该行返回给用户。以下是我尝试过的方法(没有奏效)。最重要的是,当我在命令行中使用姓氏代替$input_name来运行这个命令时,它可以正常工作。如您所见,确认正确读取了用户输入的回显。我错过了什么?

 60 last_search () {
 61         echo "What last name are you looking for?"
 62         read input_name
 63         echo "$input_name"
 64         awk -F':' '$2 ~ /$input_name/{print $0}' temp_phonebook
 65 }
  1. 使用-v name=value传递一个shell变量给awk
  2. Shell变量不会在单引号
  3. 中展开
  4. print $0是默认动作,所以把它去掉。

你可以使用:

awk -F: -v input_name="$input_name" '$2 ~ input_name' temp_phonebook

您的awk命令是单刻度,因此$input_name永远不会展开。

试试这样写:

awk -F':' '$2 ~ /'"$input_name"'/{print $0}' temp_phonebook

或者,使用-v name=value提前提供值:

awk -F':' -v search="${input_name}" '$2 ~ search {print $0}' temp_phonebook

好了,我明白了!我需要单引号周围的变量'$input_name'

相关内容

  • 没有找到相关文章

最新更新