Parsing a variable length record


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Parsing a variable length record
# 8  
Old 09-28-2004
I'm just getting back into UNIX - but I was impressed - I'd been working on it for 3 days - he came up with it in less than an hour
# 9  
Old 09-28-2004
Smilie

Who got it right on the first try? I could not get sed to do it. I gave up and let sed do the first phase and awk do the second phase. Even that took a few tries. The final result makes a few asumptions that might not have been true.

1 the first record can be ignored
2 there are never 2 record separators on one text line
3 the desired data will always be on the same line as a record separator

Had any of those been false, this would not have completely worked.
# 10  
Old 09-29-2004
I think I'm getting a complex
# 11  
Old 09-29-2004
Well it almost worked. The problem I'm having is that some of the data wraps around multiple lines and for them it's pulling blanks. The 3rd and 5th lines in the sample text show the problem. I need the 5th field and on alot of the records it's just not there. The only things I can figure out to tell it it's a multiple line record require the same character in the first position of a line. Any ideas? ^Smilie

856^18530001~BSN^14^486165^040927^181323^0004~NTE^856^18530002~BSN^14^486399^040927^181323^0004~NTE^
856^18
856^18530004~BSN^14^489012^040927^181323^0004~NTE^
856^18530005~BSN^1
856^18540001~BSN^14^488594^040927^181941^0004~NTE^
856^18540002~BSN^14^489016^040927^181941^0004~NTE^
856^18550001~BSN^14^488567^040927^182539^0004~NTE^
856^18550002~BSN^14^489102^040927^182539^0004~NTE^
856^18560001~BSN^14^484633^040927^183156^0004~NTE^Smilie
# 12  
Old 09-29-2004
I don't follow you. I edited your post to add code tags to easily see the lines...

Line 3 starts out...
ISA^00^D011-56018

I have line 5 as:
PER^BD^JANET ARROYO~N1^ST^^9

Neither line contains a ~ST sequence. Only lines 4, 7, and 15 have the ~ST sequence. So my command produces 3 lines of ouput:
440597
440598
440601
# 13  
Old 09-29-2004
True, on the sample file - but on some of the ~ST is near the end of the line and continues on the next line - when this is the case the ~ST is on one line and the 440601 would on the next line. I think what I need to figure out how to do is to tell it to continue to the next line for the record until it hits the ~ST again. Does that make sense? When I run the SED part of the command you sent me I get the results I just posted. I ran that seperately because I was seeing blanks in the file where I should have had records.
# 14  
Old 09-29-2004
Try this...

sed -n '/\~ST\^/{N;s/\n//;s/.*\~ST\^//p;}' < inputfile | awk -v FS=^ '$1=855 { print $5 }'
 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Convert variable length record to fixed length

Hi Team, I have an issue to split the file which is having special chracter(German Char) using awk command. I have a different length records in a file. I am separating the files based on the length using awk command. The command is working fine if the record is not having any... (7 Replies)
Discussion started by: Anthuvan
7 Replies

2. Shell Programming and Scripting

Record length

Hi, The record length may be differ in afile. I want to display the records if the record length is not equal to 50 using sed/awk command. Thanks in Advance (6 Replies)
Discussion started by: NareshN
6 Replies

3. Shell Programming and Scripting

changing a variable length text to a fixed length

Hi, Can anyone help with a effective solution ? I need to change a variable length text field (between 1 - 18 characters) to a fixed length text of 18 characters with the unused portion, at the end, filled with spaces. The text field is actually field 10 of a .csv file however I could cut... (7 Replies)
Discussion started by: dc18
7 Replies

4. Shell Programming and Scripting

Make variable length record a fixed length

Very, very new to unix scripting and have a unique situation. I have a file of records that contain 3 records types: (H)eader Records (D)etail Records (T)railer Records The Detail records are 82 bytes in length which is perfect. The Header and Trailer records sometimes are 82 bytes in... (3 Replies)
Discussion started by: jclanc8
3 Replies

5. Shell Programming and Scripting

Check length of record

Hi, I have a problem, please help me, I have a flat file like this: P00000000088888888999999999 0000999903 000000000000000000 P00000000077777777000000000 0000999903 000000000000000000 P00000000044444444333333333 0000999903 00000000000000000079875 P00000000066666666111111111 0000999903 ... (5 Replies)
Discussion started by: DebianJ
5 Replies

6. Shell Programming and Scripting

Parsing a variable length file

Hi I am new to shell scripting. I need to parse a file which contains the header and detail records and split into n of file based on dept ID, for ex. INPUT FILE: DEPT ID: 1 EMPNAME: XYZ EMPAddress: XYZZZ DEPT ID: 2 EMPNAME: ABC EMPAddress: ABCD DEPT ID: 1 EMPNAME: PQR EMPAddress:... (6 Replies)
Discussion started by: singhald
6 Replies

7. UNIX for Dummies Questions & Answers

What the command to find out the record length of a fixed length file?

I want to find out the record length of a fixed length file? I forgot the command. Any body know? (9 Replies)
Discussion started by: tranq01
9 Replies

8. Shell Programming and Scripting

Pivot variable record length file and change delimiter

Hi experts. I got a file (500mb max) and need to pivot it (loading into ORCL) and change BLANK delimiter to PIPE |. Sometimes there are multipel BLANKS (as a particular value may be BLANK, or simply two BLANKS instead of one BLANK). thanks for your input! Cheers, Layout... (3 Replies)
Discussion started by: thomasr
3 Replies

9. Shell Programming and Scripting

creating a fixed length output from a variable length input

Is there a command that sets a variable length? I have a input of a variable length field but my output for that field needs to be set to 32 char. Is there such a command? I am on a sun box running ksh Thanks (2 Replies)
Discussion started by: r1500
2 Replies

10. Shell Programming and Scripting

Parsing data and retaining the full length of variable

Here's is an example of what I want to do: var1="Horse " var2="Cat " var3="Fish " for animals in "$var1" "$var2" "$var3" do set $animals pet=$1 ## Ok, now I want to get the values of $pet, but ## I want to retain the full length it was... (3 Replies)
Discussion started by: app4dxh
3 Replies
Login or Register to Ask a Question