【问题标题】:How to find all lines containing specific string in 1000 file using a bash script and write them to text file with minor changes? [duplicate]如何使用 bash 脚本在 1000 个文件中查找包含特定字符串的所有行并将它们写入文本文件并进行细微更改? [复制]
【发布时间】:2018-04-10 12:26:49
【问题描述】:

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

 grep -A $2 "$1" outFile.txt >> "$1-results.txt"

现在我希望将搜索应用于 1000 个文件,但结果将在一个文本文件中。

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

我找到了answers,但他们没有在文件中与我合作,仅在终端上工作。我试图进行一些修改,但我失败了。

更新:

目录有以下文件:

res1.txt ........ res1000.txt 

输入为例:

Jhon Age 

这意味着找一个叫 jhon 的人,并用这个名字带上他的年龄。

预期输出:

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

等等。

【问题讨论】:

  • 请将代码标签中的示例输入文件和预期输出示例发布到您的帖子中。
  • grep -H 比添加标题更好:它会在每个搜索结果前面加上文件名,无需查找,易于过滤/计数等。
  • grep -A "$2" "$1" *.txt >> results.txt 有什么问题?
  • 它说没有这样的文件或目录 *.txt。而且我无法在文本文件中按照我的意愿格式化结果。或者可能我不知道我的意思是什么?

标签: bash grep


【解决方案1】:

我想这就是你要找的东西

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

【讨论】:

  • 我认为您无法使用 grep 'pattern' *.txt 获得预期的输出
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-12-06
  • 2021-02-25
  • 2019-06-07
  • 2020-01-07
  • 1970-01-01
  • 2022-10-24
  • 2022-01-24
相关资源
最近更新 更多