打印带行数的搜索词

时间:2012-03-03 14:18:00

标签: linux grep pipeline uniq wc

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

  1. 输入文件名
  2. 使用的搜索字词
  3. 唯一线条的数量
  4. 所以文件'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

3 个答案:

答案 0 :(得分:0)

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

$ 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