I need Help

09:30:04,438 INFO : FIXEngine[engine1]: INFO: FIXConnection.sendMessage(fixID=sama): pt=1, fixSendTime=1161153004438, msg=8=FIX.4.2^A9=190^A35=D^A49=012^A56=
SAMA^A115=012^A34=294^A116=I0120002^A144=2^A52=20061018-06:30:04.413^A11=020I80A3400^A1=1200212023^A63=1^A21=1^A55=2170^A54=2^A60=20061018-06:30:04^A38=317^A
40=2^A44=43.5^A59=0^A386=1^A336=510^A10=059^A

i have a file like this I need to get the Bold time in a Varibale and the 11=020I80A3400 also in A varibale so please Help me to do that please

the following will only work if the pattern in bold occurs in the specified places always n the length of the pattern also remains same. m is the file in which i have stored the file u had given.
x=`sed -n 1p m|awk -F"^" '{print $1}'|cut -c 1-12`
y=`sed -n 2p m|awk -F"^" '{print $7}'|cut -c 2-14`

so plz specify the exact nature of the problem

I have a tag in the file it's 35=D before this tag i have the time of the tag which I mentioned about it before and after the 35=D I have another tag which is 11=some string ex(11=0011IN)
so the file look like that

09:30:04,438 INFO : FIXEngine[engine1]: INFO: FIXConnection.sendMessage(fixID=sama): pt=1, fixSendTime=1161153004438, msg=8=FIX.4.2^A9=190^A35=D^A49=012^A56=
SAMA^A115=012^A34=294^A116=I0120002^A144=2^A52=20061018-06:30:04.413^A11=020I80A3400^A1=1200212023^A63=1^A21=1^A55=2170^A54=2^A60=20061018-06:30:04^A38=317^A
40=2^A44=43.5^A59=0^A386=1^A336=510^A10=059^A

and usually 35=D is in the same line of the Time and the 11=111111 in the next line

so Please I need Help

sed -n "/35=D/{N;/11=/{s/^\([^ ]*\).*\n.*\(11=[^^]*\).*$/\1 \2/p;};}" file

Can you please explain your statement. By looking at that, it is complex to understand.

/35=D/{...}

If the line contains the pattern 35=D then execute the commands within the paranthesis.

N

get the next line and append it to the pattern space

/11=/{..}

If the pattern space contains the pattern 11= then execute the commands within the paranthesis.

s/^\([^ ]*\).*\n.*\(11=[^^]*\).*$/\1 \2/p

What we need in the first line is "09:30:04,438" which is separated from next word by space. This string is matched by \([^ ]\). The next string is matched by \(11=[^^]\) which is separated from the next field by ^.

Thanks Anbu !!
BTW, Habuzahra, are you able to continue your work?

thank you for all this method was work very fine
x=`sed -n 1p Husam1.sh|awk -F"^" '{print $1}'|cut -c 1-12`
y=`sed -n 2p Husam1.sh|awk -F"^" '{print $7}'|cut -c 5-14`

but I need some one to explain in breaif becuase I don't under stand this two statment.

and can any help,
how can I subtract x from itself or any variable like it so I can get the result
for example if i subtract x from It self i will get zero

sorry , my freinds but i am new for the Unix

thanks a lot

Space is needed before and after minus operator

result=`expr $x - $y`
(( result = x - y ))