如何从大量文件中提取以“主题:”开头的行?

如何从大量文件中提取以“主题:”开头的行?

我需要提取以 开头的一行Subject:。但问题是我的文件夹中有超过 1500 个 .txt 文件。我使用这个 python 脚本:

from glob import glob
import fileinput
import os

with open('output.txt', 'w') as out:
    files = (os.path.join(p, f) for p, ds, fs in os.walk(os.curdir) for f in fs)
    for line in fileinput.input(files):
        if 'Subject:' in line:
            out.write(line)

实际上它工作得很好。但它耗费了大量的处理能力和时间。我正在寻找此脚本的替代终端命令。

答案1

有什么问题:

find ./ -type f -exec grep "Subject:" {} \; >/tmp/output.txt

答案2

使用grepwith-r进行递归搜索并-m1在第一次匹配后停止读取文件。

grep -rh -m1 '^Subject:' /path/to/your/folder/ > out

所有匹配的行都在 中out

答案3

使用sed,从任何地方:

sed -n '/^Subject:/p' /path/to/dir/*.txt

从包含文件的目录中:

sed -n '/^Subject:/p' *.txt

/^Subject:/将仅匹配以 开头的行Subject:

要将输出保存在文件中:

sed -n '/^Subject:/p' *.txt >output.file

相关内容