将第一个文件中的子串替换为来自第二个文件的另一个字符串

编程语言 2026-07-11

我有下面两个输入文件

File1:


AST                       
BDT                       
CFT                       
EDT                       
FRT

File2:


T.ABC.TXT.***.EF.TAXSE.IWS.WISHS                        
T.ABC.TXT.***.EF.TAXSE.TWS.WISHS                       
T.ABC.TXT.***.YS.NEEI.WS.WISHS.BKUP                       
T.ABC.TXT.***.YS.NEET.WS.WISHS.BKUP

我需要如下输出 也就是说,我需要把文件2记录中的 '***' 替换为文件1中的字符串AST、BDT、CFT、EDT、FRT,例如,4条记录中的所有 '***' 将被文件2中第一条记录的AST字符串替换,并写入输出。之后,再次将这4 条记录中的所有 '***' 替换为来自File2的第二条记录中的BDT字符串,然后写入输出

输出:


T.ABC.TXT.AST.EF.TAXSE.IWS.WISHS                       
T.ABC.TXT.AST.EF.TAXSE.TWS.WISHS                       
T.ABC.TXT.AST.YS.NEEI.WS.WISHS.BKUP                       
T.ABC.TXT.AST.YS.NEET.WS.WISHS.BKUP                       
T.ABC.TXT.BDT.EF.TAXSE.IWS.WISHS                       
T.ABC.TXT.BDT.EF.TAXSE.TWS.WISHS                       
T.ABC.TXT.BDT.YS.NEEI.WS.WISHS.BKUP                       
T.ABC.TXT.BDT.YS.NEET.WS.WISHS.BKUP                       
T.ABC.TXT.CFT.EF.TAXSE.IWS.WISHS                       
T.ABC.TXT.CFT.EF.TAXSE.TWS.WISHS                       
T.ABC.TXT.CFT.YS.NEEI.WS.WISHS.BKUP                       
T.ABC.TXT.CFT.YS.NEET.WS.WISHS.BKUP                       
T.ABC.TXT.EDT.EF.TAXSE.IWS.WISHS                       
T.ABC.TXT.EDT.EF.TAXSE.TWS.WISHS                       
T.ABC.TXT.EDT.YS.NEEI.WS.WISHS.BKUP                       
T.ABC.TXT.EDT.YS.NEET.WS.WISHS.BKUP                       
T.ABC.TXT.FRT.EF.TAXSE.IWS.WISHS                       
T.ABC.TXT.FRT.EF.TAXSE.TWS.WISHS                       
T.ABC.TXT.FRT.YS.NEEI.WS.WISHS.BKUP                       
T.ABC.TXT.FRT.YS.NEET.WS.WISHS.BKUP

解决方案

假设包含文件名的文件的LRECL=80和 RECFM=FB,且文件名从第1 个字符开始,且你要替换的3 个星号位于第11个字符的位置,即

----+----1----+----2----+----3----+--
T.ABC.TXT.***.EF.TAXSE.IWS.WISHS     
T.ABC.TXT.***.EF.TAXSE.TWS.WISHS     
T.ABC.TXT.***.YS.NEEI.WS.WISHS.BKUP  
T.ABC.TXT.***.YS.NEET.WS.WISHS.BKUP

下面的DFSORT JCL将给出结果

//STEP0100 EXEC PGM=SORT                               
//SYSOUT   DD SYSOUT=*                                 
//INA      DD *                                        
T.ABC.TXT.***.EF.TAXSE.IWS.WISHS                       
T.ABC.TXT.***.EF.TAXSE.TWS.WISHS                       
T.ABC.TXT.***.YS.NEEI.WS.WISHS.BKUP                    
T.ABC.TXT.***.YS.NEET.WS.WISHS.BKUP                    
//INB      DD *                                        
AST                                                    
BDT                                                    
CFT                                                    
EDT                                                    
FRT                                                    
//SORTOUT  DD SYSOUT=*                                 
//SYSIN    DD *                                        
  JOINKEYS F1=INA,FIELDS=(81,1,A),SORTED,NOSEQCK       
  JOINKEYS F2=INB,FIELDS=(05,1,A),SORTED,NOSEQCK       
  JOIN UNPAIRED                                        
  REFORMAT FIELDS=(F1:01,80,                           
                   F2:01,03)                           

  SORT FIELDS=(81,03,CH,A)                             
  OUTREC IFOUTLEN=80,                                  
         IFTHEN=(WHEN=INIT,                            
              OVERLAY=(11:11,03,CHANGE=(3,C'***',81,3),
                               NOMATCH=(11,3)))        
/*                                                     
//JNF1CNTL DD *                                        
  INREC OVERLAY=(81:C'M')                              
/*                                                     
//JNF2CNTL DD *                                        
  INREC OVERLAY=(05:C'M')                              
/*

上述作业的输出是

T.ABC.TXT.AST.EF.TAXSE.IWS.WISHS      
T.ABC.TXT.AST.YS.NEET.WS.WISHS.BKUP   
T.ABC.TXT.AST.EF.TAXSE.TWS.WISHS      
T.ABC.TXT.AST.YS.NEEI.WS.WISHS.BKUP   
T.ABC.TXT.BDT.EF.TAXSE.IWS.WISHS      
T.ABC.TXT.BDT.YS.NEET.WS.WISHS.BKUP   
T.ABC.TXT.BDT.YS.NEEI.WS.WISHS.BKUP   
T.ABC.TXT.BDT.EF.TAXSE.TWS.WISHS      
T.ABC.TXT.CFT.EF.TAXSE.IWS.WISHS      
T.ABC.TXT.CFT.YS.NEET.WS.WISHS.BKUP   
T.ABC.TXT.CFT.YS.NEEI.WS.WISHS.BKUP   
T.ABC.TXT.CFT.EF.TAXSE.TWS.WISHS      
T.ABC.TXT.EDT.EF.TAXSE.IWS.WISHS      
T.ABC.TXT.EDT.YS.NEET.WS.WISHS.BKUP   
T.ABC.TXT.EDT.YS.NEEI.WS.WISHS.BKUP   
T.ABC.TXT.EDT.EF.TAXSE.TWS.WISHS      
T.ABC.TXT.FRT.EF.TAXSE.IWS.WISHS      
T.ABC.TXT.FRT.YS.NEET.WS.WISHS.BKUP   
T.ABC.TXT.FRT.EF.TAXSE.TWS.WISHS      
T.ABC.TXT.FRT.YS.NEEI.WS.WISHS.BKUP
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章