Find a string in a file and change 4th line from that sting



IBM's flagship sort product DFSORT for sorting, merging, copying, data manipulation and reporting. Includes ICETOOL and ICEGENER

Find a string in a file and change 4th line from that sting

Postby sjrcreation » Tue Feb 28, 2012 12:55 pm

hi ,
need a help here..
i have a file like

d00124 g1245 test xxxx
d00124 g1245 main xxxx
d00124 g1245 main xxxx
d00124 g1245 main xxxx
d00124 g1245 main xxxx

requirement : when i find a text : "Test" then i need to change 4th line char ..

o/P:
d00124 g1245 test xxxx
d00124 g1245 main xxxx
d00124 g1245 main xxxx
d00124 g1245 main xxxx
d11111 g1245 main xxxx
sjrcreation
 
Posts: 30
Joined: Sat Dec 11, 2010 9:44 am
Has thanked: 0 time
Been thanked: 0 time

Re: Find a string in a file and change 4th line from that sting

 

Re: Find a string in a file and change 4th line from that st

Postby enrico-sorichetti » Tue Feb 28, 2012 2:04 pm

try with something like
 ****** ***************************** Top of Data ******************************
 000001 //ENRICO1  JOB (ACCT#),'SORT90',NOTIFY=ENRICO,                         
 000002 //             CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)                       
 000003 //* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 000004 //*                                                                     
 000005 //ICE     EXEC PGM=SORT                                                 
 000006 //SYSPRINT  DD SYSOUT=*                                                 
 000007 //SYSOUT    DD SYSOUT=*                                                 
 000008 //SORTIN    DD *                                                       
 000009 D00345 G1245 TEST  XXXX                                                 
 000010 D00345 G1245 MAIN  XXXX                                                 
 000011 D00345 G1245 MAIN  XXXX                                                 
 000012 D00345 G1245 MAIN  XXXX                                                 
 000013 D00345 G1245 MAIN  XXXX                                                 
 000014 D00345 G1245 MAIN  XXXX                                                 
 000015 D00124 G1245 TEST  XXXX                                                 
 000016 D00124 G1245 MAIN  XXXX                                                 
 000017 D00124 G1245 MAIN  XXXX                                                 
 000018 D00124 G1245 MAIN  XXXX                                                 
 000019 D00124 G1245 MAIN  XXXX                                                 
 000020 D00124 G1245 MAIN  XXXX                                                 
 000021 //SORTOUT   DD SYSOUT=*                                                 
 000022 //SYSIN     DD *                                                       
 000023   OPTION COPY                                                           
 000024   INREC  IFTHEN=(WHEN=GROUP,                                           
 000025                  BEGIN=(14,4,CH,EQ,C'TEST'),                           
 000026                  PUSH=(81:SEQ=5))                                       
 000027   OUTFIL IFOUTLEN=80,                                                   
 000028          IFTHEN=(WHEN=(81,5,ZD,EQ,5),                                   
 000029                  OVERLAY=(1:C'D11111'))                                 
 ****** **************************** Bottom of Data ****************************

********************************* TOP OF DATA **********************************
D00345 G1245 TEST  XXXX                                                         
D00345 G1245 MAIN  XXXX                                                         
D00345 G1245 MAIN  XXXX                                                         
D00345 G1245 MAIN  XXXX                                                         
D11111 G1245 MAIN  XXXX                                                         
D00345 G1245 MAIN  XXXX                                                         
D00124 G1245 TEST  XXXX                                                         
D00124 G1245 MAIN  XXXX                                                         
D00124 G1245 MAIN  XXXX                                                         
D00124 G1245 MAIN  XXXX                                                         
D11111 G1245 MAIN  XXXX                                                         
D00124 G1245 MAIN  XXXX                                                         
******************************** BOTTOM OF DATA ********************************


tested wilt a LRECL 80 and 'TEST' is in a fixed position

if on the other side 'TEST' may occur anywhere in the record then You could use something like

 ****** ***************************** Top of Data ******************************
 000001 //ENRICO1  JOB (ACCT#),'SORT90',NOTIFY=ENRICO,                         
 000002 //             CLASS=A,MSGCLASS=X,MSGLEVEL=(1,1)                       
 000003 //* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
 000004 //*                                                                     
 000005 //ICE     EXEC PGM=SORT                                                 
 000006 //SYSPRINT  DD SYSOUT=*                                                 
 000007 //SYSOUT    DD SYSOUT=*                                                 
 000008 //SORTIN    DD *                                                       
 000009 D00345 G1245 TEST  XXXX                                                 
 000010 D00345 G1245 MAIN  XXXX                                                 
 000011 D00345 G1245 MAIN  XXXX                                                 
 000012 D00345 G1245 MAIN  XXXX                                                 
 000013 D00345 G1245 MAIN  XXXX                                                 
 000014 D00345 G1245 MAIN  XXXX                                                 
 000015 D00124 G1245                  TEST  XXXX                               
 000016 D00124 G1245 MAIN  XXXX                                                 
 000017 D00124 G1245 MAIN  XXXX                                                 
 000018 D00124 G1245 MAIN  XXXX                                                 
 000019 D00124 G1245 MAIN  XXXX                                                 
 000020 D00124 G1245 MAIN  XXXX                                                 
 000021 //SORTOUT   DD SYSOUT=*                                                 
 000022 //SYSIN     DD *                                                       
 000023   OPTION COPY                                                           
 000024   INREC  IFTHEN=(WHEN=GROUP,                                           
 000025                  BEGIN=(1,80,SS,EQ,C'TEST'),                           
 000026                  PUSH=(81:SEQ=5))                                       
 000027   OUTFIL IFOUTLEN=80,                                                   
 000028          IFTHEN=(WHEN=(81,5,ZD,EQ,5),                                   
 000029                  OVERLAY=(1:C'D11111'))                                 
 ****** **************************** Bottom of Data ****************************

********************************* TOP OF DATA **********************************
D00345 G1245 TEST  XXXX                                                         
D00345 G1245 MAIN  XXXX                                                         
D00345 G1245 MAIN  XXXX                                                         
D00345 G1245 MAIN  XXXX                                                         
D11111 G1245 MAIN  XXXX                                                         
D00345 G1245 MAIN  XXXX                                                         
D00124 G1245                  TEST  XXXX                                       
D00124 G1245 MAIN  XXXX                                                         
D00124 G1245 MAIN  XXXX                                                         
D00124 G1245 MAIN  XXXX                                                         
D11111 G1245 MAIN  XXXX                                                         
D00124 G1245 MAIN  XXXX                                                         
******************************** BOTTOM OF DATA ********************************
cheers
enrico
When I tell somebody to RTFM or STFW I usually have the page open in another tab/window of my browser,
so that I am sure that the information requested can be reached with a very small effort
enrico-sorichetti
Global moderator
 
Posts: 2644
Joined: Fri Apr 18, 2008 11:25 pm
Has thanked: 0 time
Been thanked: 130 times

Re: Find a string in a file and change 4th line from that st

Postby sjrcreation » Tue Feb 28, 2012 7:06 pm

Thanks a lot..
sjrcreation
 
Posts: 30
Joined: Sat Dec 11, 2010 9:44 am
Has thanked: 0 time
Been thanked: 0 time

Re: Find a string in a file and change 4th line from that st

Postby skolusu » Tue Feb 28, 2012 10:51 pm

Sjrcreation,

Alternatively you can use the following simplified DFSORT control cards

//SYSIN    DD *                                           
  OPTION COPY                                             
  INREC IFOUTLEN=80,IFTHEN=(WHEN=GROUP,                   
  BEGIN=(14,4,CH,EQ,C'TEST'),PUSH=(81:SEQ=1),RECORDS=5),   
  IFTHEN=(WHEN=(81,1,ZD,EQ,5),OVERLAY=(C'D11111'))         
//*
Kolusu - DFSORT Development Team (IBM)
DFSORT is on the Web at:
www.ibm.com/storage/dfsort
skolusu
 
Posts: 586
Joined: Wed Apr 02, 2008 10:38 pm
Has thanked: 0 time
Been thanked: 39 times


Return to DFSORT/ICETOOL/ICEGENER

 


  • Related topics
    Replies
    Views
    Last post