0

你好 bash 初学者问题。我想查看多个文件,找到包含搜索词的行,计算此列表中唯一行的数量,然后打印到 tex 文件中:

  1. 输入文件名
  2. 使用的搜索词
  3. 唯一行数

因此,使用搜索词“Stop_gained”的文件“Firstpredictoroutput.txt”的示例输出行,其中文件中有 10 个唯一行:

Firstpredictoroutput.txt Stop_gained 10 

我可以使用以下方法获取单个文件的唯一计数:

grep 'Search_term' inputfile.txt | uniq -c | wc -l | >>output.txt 

但是我对使用 bash 在管道中实现循环还不够了解。我所有的输入文件都以 *predictoroutput.txt 结尾

任何帮助是极大的赞赏。

提前致谢,

鲁巴尔

4

3 回答 3

0

您可以编写一个名为 的函数fun,并fun使用两个参数调用 :filenamepattern

$ fun() { echo "$1 $2 `grep -c $2 $1`"; }
$ fun input.txt Stop_gained
input.txt Stop_gained 2
于 2012-03-03T14:28:42.470 回答
0

您可以使用查找:

find . -type f -exec sh -c "grep 'Search_term' {} | uniq -c | wc -l >> output.txt" \;

尽管您可能会遇到奇怪的文件名问题。您可以添加更多选项来查找,例如仅处理“.txt”文件:

find . -type f -name "*.txt" -exec sh -c "grep 'Search_term' {} | uniq -c | wc -l >> output.txt" \;
于 2012-03-03T14:43:18.657 回答
0
q="search for this"
for f in *.txt; do echo "$f $q $(grep $q $f | uniq | wc -l)"; done > out.txt
于 2012-03-03T14:57:24.683 回答