bash脚本接收用户输入搜索文件并格式化输出时报EOF错误如何解决
问题排查与解决方案
报错unexpected EOF while looking for matching ''`由awk命令的语法、引号配对、参数位置错误导致,具体问题及修正如下:
错误点梳理
- 字段分隔符参数
-F:位置错误,需放在awk选项位,不能写入模式匹配规则中 - 变量模式匹配写法错误,
/ /仅用于硬编码正则场景,传入变量直接写$0 ~ Keyword作为判断条件即可 - 单引号配对错误,awk的规则块需要整体用单引号包裹,原代码提前断开了单引号
- print语句末尾的输出字符串未闭合引号
修正后可运行代码
echo 'Enter a Keyword: ' read Keyword awk -v Keyword="$Keyword" -F: '$0 ~ Keyword { print "Name: "$1"\nPhone: "$2"\nEmail: "$3"\n" }' myfile
可选优化
如需忽略大小写匹配,将判断条件替换为tolower($0) ~ tolower(Keyword)即可。
内容的提问来源于stack exchange,提问作者jkmar
相关产品推荐
相关产品推荐

