感谢您查看这篇文章。作为回报,我将努力做到清晰,全面!
下面的情况:
- 数百个〜GB大小的.gz档案
- 包含标识符的有用数据列表。每个标识符都与在其中查找数据的唯一存档的名称相关联。
.gz档案的数据结构:
zcat archive.gz
...
identifier_nth
...
END_BLOCK
...
...
...
identifier_1
...
END_BLOCK
...
...
...
identifier_1
...
...
END_BLOCK
...
...
identifier_nth
...
END_BLOCK
...
...
...
identifier_1
...
END_BLOCK
...
identifier_nth
...
END_BLOCK
我目前正在:
start=$(echo "$wanted_identifier_of_list") # I cat | while read through a list of thousands identifiers for the process (here $wanted_identifier_of_list = identifier_1)
end=$(echo "END_BLOCK")
zcat nth_archive.gz | sed -n "/${start}/,/${end}/p" > ${start}.dat
它工作正常,但速度较慢,并且每个标识符提取的块过多。从第一次出现到第N次出现,我只需要其中的一小部分。
所以我想:
1)将我检索的块数限制为任意数(例如,此处N = 2) 2)退出zcat / sed或完成后或读完档案时使用的任何东西。
任何帮助都感激不尽!
非常感谢,
弗洛里安
这样的事情应该可以提前退出。但是,未经测试。