Rename files in the script

Hi All,

I want to write a script to rename the file in to the incremental order
for example

Original file

[job1]
filename=/nfs/n1/file1.img
[job1]
filename=/nfs/n1/file1.img
[job1]
filename=/nfs/n1/file1.img
[job1]
filename=/nfs/n1/file1.img
[job1]
filename=/nfs/n1/file1.img

I want output shpuld be like this

[job1]
filename=/nfs/n1/file1.img
[job2]
filename=/nfs/n1/file2.img
[job3]
filename=/nfs/n1/file3.img
[job4]
filename=/nfs/n1/file4.img
[job5]
filename=/nfs/n1/file5.img

Thanks in advance

$ nawk '{if(NR%2==1){a=a+1;print "[job"a"]"}else{b=b+1;print "filename=/nfs/n1/file"a".img"}}' test                                                
[job1]
filename=/nfs/n1/file1.img
[job2]
filename=/nfs/n1/file2.img
[job3]
filename=/nfs/n1/file3.img
[job4]
filename=/nfs/n1/file4.img
[job5]
filename=/nfs/n1/file5.img
1 Like

Alternate awk..

awk '{a=++i;v="[job"a"]\n";getline;sub(/file1/,"file"a);print v $0}' inputfile
1 Like

Slightly more general (expecting lines starting with "filename=" and applies increasing increment on whatever number it finds before the extension dot):

perl -p -e 'chomp;if(m,^filename=,){@f=split("=");@name=split("/",@f[$#f]);if(@name[$#name]=~m,(.*)([0-9]+)(\..+),){@name[$#name]=join("",$1,($2+$i++),$3)};@f[$#f]=join("/",@name);$_=join("=",@f)}$_.=$/' inputfile

1 Like

Thanks friends for usefull comments ....