将文本文件拆分为多个文件

时间:2013-04-29 07:12:47

标签: bash unix awk

我有大文本文件,每个摘要之间有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. 

3 个答案:

答案 0 :(得分:32)

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

split -l 2 file

答案 1 :(得分:4)

这样的事情:

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

这将创建1000个文件,文件名为抽象编号。此awk代码将记录写入一个文件,该文件的名称从第一个字段($ 1)中检索。仅在字段数大于0(NF)

时才会执行此操作

答案 2 :(得分:4)

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

类似于:

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

它未经测试,可能需要稍微调整一下。

CSPLIT