gin*_*ino 3 awk text-processing csplit
我在 Linux 上有一个文件,其中包含数千个分子的坐标。每个分子都以包含始终相同模式的一行开始:
@<TRIPOS>MOLECULE
Run Code Online (Sandbox Code Playgroud)
然后继续其他行。我想将文件拆分为多个文件,每个文件包含一定数量的分子。什么是最简单的方法来做到这一点?
αғs*_*нιη 10
一种方法是使用awk:
awk -v moleculesNum=7 '
/^@<TRIPOS>MOLECULE/{
if((++num)%moleculesNum==1){
close(outfile); outfile="file" (++Output)
}
}
{ print >outfile }' infile
Run Code Online (Sandbox Code Playgroud)
这会将原始文件拆分为多个文件,每个文件最多有 7 个分子(可在moleculesNum=7参数中调整)