你好bash初学者问题。我想查看多个文件,找到包含搜索词的行,计算此列表中唯一行的数量,然后打印到tex文件中:
所以文件'Firstpredictoroutput.txt'的示例输出行使用搜索词'Stop_gained',其中文件中有10个唯一行:
Firstpredictoroutput.txt Stop_gained 10
我可以使用以下方法获取单个文件的唯一计数:
grep 'Search_term' inputfile.txt | uniq -c | wc -l | >>output.txt
但我还不知道使用bash在管道中实现循环。 我的所有输入文件都以* predictoroutput.txt结尾
非常感谢任何帮助。
提前致谢,
Rubal
答案 0 :(得分:0)
您可以编写一个名为fun
的函数,并使用两个参数调用fun
:filename
和pattern
$ fun() { echo "$1 $2 `grep -c $2 $1`"; }
$ fun input.txt Stop_gained
input.txt Stop_gained 2
答案 1 :(得分:0)
您可以使用find:
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" \;
答案 2 :(得分:0)
q="search for this"
for f in *.txt; do echo "$f $q $(grep $q $f | uniq | wc -l)"; done > out.txt