【发布时间】:2018-03-16 06:58:17
【问题描述】:
使用 bash 脚本,我尝试逐行遍历只有大约 700 个单词的文本文件,并在当前目录中使用特定文件上的单词运行不区分大小写的 grep 搜索。为了分解它,我试图将以下内容输出到文件中:
- 在文件中添加一个换行符,然后是搜索的单词,然后是另一个换行符
- 使用该搜索附加 grep 命令的结果
- 重复步骤 1 和 2,直到用尽列表中的所有单词
例如,如果我有这个 list.txt:
search1
search2
我希望 results.txt 是:
search1:
grep result here
search2:
grep result here
我在整个堆栈交换中找到了一些关于如何做到这一点的答案,并提出了以下实现:
#!/usr/bin/bash
while IFS = read -r line;
do
"\n$line:\n" >> "results.txt";
grep -i "$line" *.in >> "results.txt";
done < "list.txt"
但是,由于某种原因,这(以及我尝试过的众多变体)不起作用。看起来微不足道,但我会让我难以置信。任何帮助表示赞赏。
【问题讨论】:
-
是
grep result here只是包含模式searchX的文件名列表吗?你还需要行号吗? -
shellcheck.net 是快速查找 shell 脚本问题的好选择
-
echo -e 解释 \n 换行符 :)