Shell 如何搜索关键字,然后列出有关该关键字的所有行?

Shell 如何搜索关键字,然后列出有关该关键字的所有行?,shell,Shell,我使用标准shell编写了一个电话簿程序,可以添加、删除和搜索您要查找的联系人。 我使用4个变量存储一个联系人的信息,名称、地址、城市和电话号码。我把它们一行一行地放到一个txt文件中。当我进行搜索时,例如: Bill 2 wood st. city 123-4323 当我搜索比尔、伍德或4323时,我需要打印所有这4行。 sed和awk不允许使用,怎么做 我使用了grep,它只能输出一行 echo -e "\nEnter name to look up: \c" read search gr

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

Bill
2 wood st.
city
123-4323
当我搜索比尔、伍德或4323时,我需要打印所有这4行。 sed和awk不允许使用,怎么做

我使用了grep,它只能输出一行

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

这里有一个awk程序来取代grep:

#/usr/bin/bash
阅读-rp'输入搜索词:'搜索
awk-v search=“$search””
#读4行作为“记录”

{record=$0;for(i=1;iYou可以做
grep-i-C3“$search”书获取+- 3行上下文,这样你就可以显示完整的记录。如果你希望输出比这更简洁,还有更多的工作要做。同时,确保你引用变量。假设你已经控制了文件格式,考虑在记录之间添加一个分隔符(例如,‘===’,或类似的)。。这将使记录的处理更加容易。请选择一个不会出现在正常数据中的分隔符。我现在遇到另一个问题,我使用grep-I-C3“$search”book,如果我搜索电话号码,下一个联系人的信息将被打印出来。有什么办法避免这种情况发生吗?顺便说一句,每个联系人之间都有一条换行线,在遇到换行线时无论如何都要停止。仍然不使用awk。真的不知道为什么我的教授不允许使用awk或sed。你应该把重要的细节,如问题是“记录之间的空白行”。你可以使用什么工具?只有标准的shell