如何Grep&基于来自多文本文件的标识符行的Cat文本文件

时间:2015-02-20 18:16:29

标签: linux bash grep cat

全部 我正在寻找一种有效的方法来组织和过滤某些类型的文本文件。

假设我有10,000,000个文本文件连接到更大的块,格式是这样的

@text_file_header
ID0001
some text
...
@text_file_header
ID0002
some text
...
@text_file_header
ID0003
some text
...

现在,我对这些文件执行某些操作,以便最终得到200 x 10,000,000个文本文件(以块为单位) - 每个文本文件现在都有“兄弟姐妹”

@text_file_header
ID0001_1
some text
...
@text_file_header
ID0001_2
some text
...
@text_file_header
ID0001_3
some text
...
@text_file_header
ID0002_1
some text
...
@text_file_header
ID0002_2
some text
...
@text_file_header
ID0002_3
some text

但是,对于某些任务,我只需要某些文本文件,我的主要问题是我如何根据文本文件中的“id”提取它们(例如,grep ID0001_ *和ID0005_ *和ID0006_ *等等)上)。

SQLite是一个选项,我也有一个带有ID和文件列的SQLite数据库,但问题是我需要进行此计算,因为时间我在集群上生成那些200 * 10,000,000个文本文件限制。 SQLite的文件I / O现在太限制了。

我现在的想法是将这些文件分成10,000,000个单独的文件,如此

gawk -v RS="@<TRIPOS>MOLECULE" 'NF{ print RS$0 > "file"++n".txt" }' all_chunk_01.txt

在我生成这200个“兄弟姐妹”之后,我会做一个 cat在基于我当前感兴趣的文件ID的文件夹中。假设我需要10,000,000个文本文件中的10,000个团队,我会将它们一起记录到我需要的单个文档中处理步骤。 现在,我担心的是,将10,000,000个单独的文件存储在磁盘上的单个文件夹中并执行cat是一个好主意,还是最好根据来自let的ID来grep输出文件?说100个多文本文件?

1 个答案:

答案 0 :(得分:-1)

例如:

grep TextToFind FileWhereToFind

返回你想要的东西。