Closed. This question needs to be more focused。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
                        
                        5年前关闭。
                                                                                            
                
        
我输入文件的内容-测试:

tang 123 gene gene 3000 1000 4000



5h列是碱基对中基因的大小。
第六列是基因位置的起点;
第7列是基因位置的终点。


我想将这条线分为600条碱基对的多条线,直到终点为止。

我想要这样的结果:

tang 123 gene gene 600 1000 1600
tang 123 gene gene 600 1600 2200
tang 123 gene gene 600 2200 2800
tang 123 gene gene 600 2800 3400
tang 123 gene gene 600 3400 4000


我应该怎么做才能得出这些结果?我可以只编写命令行还是需要编写脚本?

最佳答案

快速一线:

echo tang 123 gene gene 3000 1000 4000 |\
perl -ale '$F[4] = 600; print "@F[0..5] ",$F[5]+=$F[4] while $F[5] < $F[6]'


对于每一行,将其分为字段0到6,并将字段4替换为600。

然后打印字段0..5,将字段5递增4,并在字段5的位置小于字段6的位置打印它。

关于linux - LINUX/PERL:将单行拆分为多行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25850439/

10-12 07:17