如何从多个文件中打印每一行,并将其写为第n行的每一组?

时间:2018-06-04 09:12:48

标签: linux macos awk sed

我想从名为chain * .dat(chaina,chain,chainc,chaind和chaine。)的五个文件中打印每108行。

我试过这个命令。

awk 'FNR%108==1 {print FILENAME,$0}' chain*.dat > frame1.pdb

在我尝试这个之后,它没有从不同的文件中打印第108行作为与第216,324 ......行分开的一组。但是,它会将每个文件的第108个,第216个,第324个......打印为一组,并继续使用另一个文件。

chaina.dat #Frame                             
chaina.dat      108 -18.2676  -4.1726  12.7671
chaina.dat      216 -18.1870  -4.1540  12.7068
chaina.dat      324 -18.8576  -3.7915  13.0166
chaina.dat      432 -18.8460  -3.9601  12.2811
chaina.dat      540 -19.6739  -3.5707  11.5205
chaina.dat      648 -19.6330  -2.2099  11.5793
chaina.dat      756 -18.9687  -1.8901  13.0677
chaina.dat      ... ........  .......  .......
chainb.dat #Frame                             
chainb.dat      108  -8.0205 -20.6024  -6.0144
chainb.dat      216  -7.9829 -20.5061  -5.9884
chainb.dat      324  -8.5538 -20.9686  -6.0676
chainb.dat      432  -9.5947 -20.4246  -7.1129
chainb.dat      540  -9.2219 -20.5374  -8.1963
chainb.dat      648  -9.6236 -20.2414  -6.8494
chainb.dat      756  -8.9011 -20.3855  -5.0769
chainb.dat      ... ........  .......  .......

我想要的是像这样打印

chaina.dat      108 -18.2676  -4.1726  12.7671
chainb.dat      108  -8.0205 -20.6024  -6.0144
chaina.dat      216 -18.1870  -4.1540  12.7068
chainb.dat      216  -7.9829 -20.5061  -5.9884

感谢您的帮助。我对此很陌生。 如果您有手册建议我阅读,请告诉我。

1 个答案:

答案 0 :(得分:1)

您可以尝试关注awk

awk 'FNR%108==0{print FILENAME,FNR,$0}' chain*.dat | sort -ns -k2