Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用bash脚本在1000文件中查找包含特定字符串的所有行,并将它们写入文本文件,只需稍作更改?_Bash_Grep - Fatal编程技术网

如何使用bash脚本在1000文件中查找包含特定字符串的所有行,并将它们写入文本文件,只需稍作更改?

如何使用bash脚本在1000文件中查找包含特定字符串的所有行,并将它们写入文本文件,只需稍作更改?,bash,grep,Bash,Grep,我编写了一个小脚本,找到一行包含我提供给bash的特定字符串,并将它们写入文本文件 grep -A $2 "$1" outFile.txt >> "$1-results.txt" 现在我希望搜索应用于1000个文件,但结果将在一个文本文件中 我想做的第二件事是在开始搜索每个要写入的文件之前添加一个标题“文件1”,当文件1完成时添加“文件2”等等 我已经找到了,但他们没有在文件中与我一起工作,他们只在终端上工作。我试图做一些修改,但失败了 更新: 目录包含以下文件: res1.tx

我编写了一个小脚本,找到一行包含我提供给bash的特定字符串,并将它们写入文本文件

 grep -A $2 "$1" outFile.txt >> "$1-results.txt"
现在我希望搜索应用于1000个文件,但结果将在一个文本文件中

我想做的第二件事是在开始搜索每个要写入的文件之前添加一个标题“文件1”,当文件1完成时添加“文件2”等等

我已经找到了,但他们没有在文件中与我一起工作,他们只在终端上工作。我试图做一些修改,但失败了

更新:

目录包含以下文件:

res1.txt ........ res1000.txt 
以输入为例:

Jhon Age 
也就是说,让任何一个名字叫jhon的人,用这个名字告诉他的年龄

预计产量:

      FILE1
 Jhon      43
 Jhon      55 
      FILE2
  Jhon     66
      .
      .
      .
      .
      .
     FILE3
      .
      .
      .

等等

我想这就是你要找的

for i in *.txt;do
  result=$(grep -A "$2" "$1" "$i")
  [ $? -eq 0 ] && { echo "$i"; echo "$result"; }
done

请将示例输入文件和代码标记中的预期输出示例发布到您的帖子中。
grep-H
比添加标题更好:它将在每个搜索结果前添加文件名,无需查找,易于过滤/计数等等。
grep-A“$2”“$1”有什么问题*.txt>>results.txt
?它表示没有这样的文件或目录*.txt。我无法在文本文件中格式化结果。或者可能我不知道我是如何理解我的观点的?我认为使用grep'pattern'*.txt无法获得预期的输出