shell - 如何搜索关键字然后列出有关该关键字的所有行?
问题描述
我使用标准外壳编写了一个电话簿程序,可以添加、删除和搜索您要查找的联系人。我使用 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
解决方案
这是一个替换 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
推荐阅读
- c# - C# Windows 窗体 HttpClient cURL
- javascript - 窗口 getcomputedstyle 无法执行“getcomputedstyle”
- python - Pyparsing从文件中读取unicode字符
- java - 将文件绝对路径作为路径参数发送到 spring boot 控制器以下载文件
- c# - 消费者中的 Jroland/kafka-net 组 ID 分配
- php - 在 CentOS 6.10 中将 PHP 5.5.38 升级到 PHP 7
- c - 在 X-Macro 中打印数组元素时出现编译错误
- javascript - 数字连接而不是相加
- ios - 解码自定义初始化中的所有属性(枚举类的所有属性并为其赋值)
- php - Google App Eng (flex) 上的 Symfony 4 - 500 错误