如何编写Shell脚本搜索文件中指定索引编号的书籍并打印对应行
解决带索引编号书籍文件的搜索需求(Shell脚本实现)
我帮你修正并优化了脚本,解决了原脚本里的拼写错误和潜在的匹配问题,确保能精准搜索到指定索引对应的书籍行:
#!/bin/bash echo "Enter the content you are searching for:" read -r content echo -e "\nResult Showing For: $content\n" # 使用正则表达式精准匹配独立的索引编号,避免匹配包含目标数字的其他编号 grep -E "(^|,| )$content(,| |$)" "GUTINDEX.ALL"
关键优化点说明:
- 修正了拼写错误:把
Shwoing改成了正确的Showing - 给
read加上-r选项:防止用户输入的内容里的反斜杠被意外转义 - 给
$content和文件名加引号:避免当搜索内容包含空格或者文件名有特殊字符时出现错误 - 使用
grep -E结合正则表达式:确保匹配的是独立的索引编号,比如搜索1时不会误匹配到11、21这类包含1的编号。正则(^|,| )表示匹配行开头、逗号或空格,(,| |$)表示匹配逗号、空格或行结尾,这样就能把索引编号作为独立的单元匹配。
测试效果:
- 当你输入
1时,只会输出包含独立编号1的行:"The Declaration of Independence of the United States of America, 1 by Thomas Jefferson"
- 当你输入
11时,只会输出包含独立编号11的行:"Alice's Adventures in Wonderland, by Lewis Carroll 11"
内容的提问来源于stack exchange,提问作者Safin Mahmud
相关产品推荐
相关产品推荐

