Hi,

Following is my code :

i=3
j=3
while [ $i -le $count1 ]
do
i=`expr $i + 3`
head -n 60 file1.imp >> s27.txt
while [ $j -le 60 ]
do
head -n 3 file2.imp >> s27.imp
./prog1 s27.txt > result.txt
if grep OUT result.txt
then
head -n 3 file1.imp >> final.imp
num=`expr $num + 1`
else
k=`expr $j -3`
sed "$j,$k d" file1.imp > f1.imp
mv f1.imp file1.imp
fi
sed '1,3d' file2.imp > f2.imp
mv f2.imp file2.imp
j=`expr $j +3`
done

I am checking 3 lines from file2 at a time.

I am getting the following error in while loop and sed command. I am trying to delete 3 lines from the file1.

Error: expr: syntax error
sed: 1: "3, d": expected context address
expr: syntax error
line 21: [: -le: unary operator expected

Can I use a while loop inside a while loop. Is there something wrong in my syntax for sed and while.

Please help.

Thanks

Hey There,

I'll check this out. What are you trying to delete and what are the spec's for deletion? For the code you posted, you're missing a closing "done" for the outside while loop. It's perfectly okay to do a while loop within a while loop, I'm just thinking it might be easier to do this in a different way.

Thanks,

Mike

Sorry,

Looks like the count1 variable isn't set either and it's used in a arithmetic test right at the beginning. If possible, could you cut and paste the entire code and post it in code-tags. It seems that the entire program isn't here.

Thanks :)

, Mike

Edited 3 Years Ago by mike_2000_17: Fixed formatting

I got the mistake. There was a space missing in the expression j = j+ 3.

Thanks guys...

Good catch :) Those spaces'll getcha every time, especially since expr is different than "let" arithmetic and I often get the two confused :)

, Mike

This question has already been answered. Start a new discussion instead.