14

我有一个包含 1000 个摘要的大型文本文件,每个摘要之间都有空行。我想将此文件拆分为 1000 个文本文件。我的文件看起来像

16503654    Three-dimensional structure of neuropeptide k bound to dodecylphosphocholine micelles.      Neuropeptide K (NPK), an N-terminally extended form of neurokinin A (NKA), represents the most potent and longest lasting vasodepressor and cardiomodulatory tachykinin reported thus far.  

16504520    Computer-aided analysis of the interactions of glutamine synthetase with its inhibitors.        Mechanism of inhibition of glutamine synthetase (EC 6.3.1.2; GS) by phosphinothricin and its analogues was studied in some detail using molecular modeling methods. 
4

3 回答 3

45

您可以使用拆分并将“每个输出文件的 NUMBER 行”设置为 2。每个文件将有一个文本行和一个空行。

split -l 2 file
于 2013-04-29T07:27:12.760 回答
4

像这样的东西:

awk 'NF{print > $1;close($1);}' file

这将创建 1000 个文件,其中文件名是摘要编号。此 awk 代码将记录写入文件,该文件的名称是从第一个字段 ($1) 中检索的。仅当字段数大于 0(NF) 时才执行此操作

于 2013-04-29T07:16:34.650 回答
4

您始终可以使用 csplit 命令。这是一个文件拆分器,但基于正则表达式。

类似于:

csplit -ks -f /tmp/files INPUTFILENAMEGOESHERE '/^$/'

它未经测试,但可能需要稍作调整。

CSPLIT

于 2013-04-29T07:30:10.243 回答