0

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

2
Contributors
4
Replies
5
Views
9 Years
Discussion Span
Last Post by eggi
0

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

0

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 by mike_2000_17: Fixed formatting

0

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

Thanks guys...

0

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.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.