I need Help


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers I need Help
# 1  
Old 10-18-2006
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
# 2  
Old 10-18-2006
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
# 3  
Old 10-18-2006
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

Last edited by habuzahra; 10-18-2006 at 10:57 AM..
# 4  
Old 10-18-2006
Code:
sed -n "/35=D/{N;/11=/{s/^\([^ ]*\).*\n.*\(11=[^^]*\).*$/\1 \2/p;};}" file

# 5  
Old 10-18-2006
Data

Can you please explain your statement. By looking at that, it is complex to understand.
# 6  
Old 10-18-2006
Quote:
Originally Posted by ravikirankethe
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 ^.
# 7  
Old 10-18-2006
Thanks Anbu !!
BTW, Habuzahra, are you able to continue your work?
 
Login or Register to Ask a Question

Previous Thread | Next Thread
Login or Register to Ask a Question