bash – 如何将文件拆分为由关键字定义的块
发布时间:2020-12-16 01:48:55 所属栏目:安全 来源:网络整理
导读:假设我有一个大文本文件,例如: variableStep chrom=chr1sometext1sometext1sometext1variableStep chrom=chr2sometext2variableStep chrom=chr3sometext3sometext3sometext3sometext3 我想将此文件拆分为3个文件: 文件1包含内容 sometext1sometext1sometex
假设我有一个大文本文件,例如:
variableStep chrom=chr1 sometext1 sometext1 sometext1 variableStep chrom=chr2 sometext2 variableStep chrom=chr3 sometext3 sometext3 sometext3 sometext3 我想将此文件拆分为3个文件: sometext1 sometext1 sometext2 文件2有内容 sometext2 和文件3有内容 sometext3 sometext3 sometext3 sometext3 注意,“sometext1”“sometext2”“sometext3”都没有“variableStep”这个词. 我可以在python中执行此操作,只需遍历行并打开一个新的文件句柄,并在每次遇到行中的“variableStep”时将后续行写入其中,但是,我想知道是否可以在命令行. 谢谢 解决方法
这将创建具有所需内容的file1,file2等:
awk '/variableStep/{close(f); f="file" ++c;next} {print>f;}' file 这个怎么运作 > / variableStep / {close(f); f =“file”c; next} 每当我们到达包含variableStep的行时,我们关闭最后使用的文件,将f分配给下一个要使用的文件的名称,然后跳过其余的命令并跳转到下一行. c是一个告诉我们当前文件编号的计数器.每次创建新文件名时都会增加. 对于所有其他行,我们将它们打印到根据变量f的值命名的文件中. 由于这会逐行处理文件,因此即使对于海量文件也应该是合适的. 第一个输出文件如下所示: $cat file1 sometext1 sometext1 sometext1 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |