guys,
I need a steer in the right direction for this issue. it would be great if anyone of you can help me out.
i have a textfile where i want to swap the lines based on the user input.
The textfile is looks like the
#file 1 name
TB
#file 1 ID
1000
#
#file for ID1 system1
AB_12_TB_3000
#
#file for ID1 system2
BC_12_TB_3000
#file 2 name
CO
#file 2 ID
5000
#
#file for ID2 system1
AB_12_CO_3000
#
#file for ID2 system2
BC_12_CO_3000
if the user enters CO then i want CO,5000 and the files should be file 1 and the TB should be file 2. basically interchanging it and making the user entry to be on top and putting the top one to be on the placeholder of file2.here i have mentioned only 2 files, but i am dealing with more than 2 in my files.
The code i have written so far is like this. it works except the ID part.
THE FILENAME IS ROCK.IN i.e that why u see rock.in at the end.
MY QUESTION WOULD BE
1)IS THERE A MORE ROBUST AND EASIER WAY TO DO THIS.
2)MY LAST SED STATEMENT IS NOT CHANGING IT PROPERLY
#!/bin/bash
user_rock=$(grep -hi 'tb' rock.in)
val=$(grep -A 3 -m 1 -hi 'tb' rock.in)
rock1=$(sed -n -e '/file 1/ {n;p;}' rock.in)
D1=`echo $rock1 | cut -d ' ' -f3`
r_name=`echo $D1| cut -d '_' -f3`
D2=`echo $rock1 | cut -d ' ' -f2`
D3=`echo $val | cut -d ' ' -f5`
D6=`echo $val | cut -d ' ' -f3`
D4=`echo $user_rock | cut -d ' ' -f3`
u_name=`echo $D4| cut -d '_' -f3`
sed -i "s/$u_name/ch/gi" rock.in
sed -i "s/$r_name/$u_name/gi" rock.in
sed -i "s/ch/$r_name/gi" rock.in
sed -i "/file 1 ID/,/{n;p;}/s/$D2/$D3/g" rock.in
sed -i "/file $D6 ID/,/{n;p;}/s/$D3/$D2/g" rock.in
#echo $D3 $D2
exit 0
I WOULD APPRECIATE ANY IDEAS OR SUGGESTIONS. THANKS AGAIN