首页 > 解决方案 > 如何搜索关键字然后列出有关该关键字的所有行?

问题描述

我使用标准外壳编写了一个电话簿程序,可以添加、删除和搜索您要查找的联系人。我使用 4 个变量、姓名、地址、城市和电话号码来存储一个联系人的信息。我将它们逐行放入一个txt文件中。当我进行搜索时,例如:

Bill
2 wood st.
city
123-4323

当我搜索 Bill、wood 或 4323 时,我需要打印所有这 4 行。sed和awk都不允许使用,怎么办?

我使用了只能输出一行的 grep。

echo -e "\nEnter name to look up: \c"
read search
grep -i $search book

标签: shell

解决方案


这是一个替换 grep 的 awk 程序:

#!/usr/bin/bash

read -rp 'Enter a search term: ' search

awk -v search="$search" '
  # read 4 lines as a "record"
  { record = $0; for (i=1; i<=3; i++) { getline; record = record RS $0 } }
  # do the case insensitive pattern match
  tolower(record) ~ tolower(search) { print record }
' book

推荐阅读