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

Recommended Answers

All 4 Replies

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

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

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, learning, and sharing knowledge.