insert pipes for existing and non-existing records


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting insert pipes for existing and non-existing records
# 1  
Old 06-29-2009
insert pipes for existing and non-existing records

I have a source file like this,
L4058S462 34329094 F51010141TK1070000483L4058S462 34329094 0232384840 381892 182 5690
L4058S462 34329094 F51020141FIRST CLEARING, LLC A/C 3432-9094
L4058S462 34329094 F51030141JOHAN HOLMQVIST YVSTANGSVAGEN 6
L4058S462 34329094 F51040141VALBO 81892 SWEDEN AIRMAIL 000000000
L4058S462 34329094 F51090141 0000 0
L4058T155 86374984 F51010141TK1070000443L4058T155 86374984 0232384840 4 182 5690
L4058T155 86374984 F51020141FIRST CLEARING, LLC A/C 8637-4984
L4058T155 86374984 F51030141CONFIDENTIAL & CONFIDENTIAL JT TEN
L4058T155 86374984 F510401412801 MARKET STREET SAINT LOUIS MO 63103


Data in Red color is one data set,blue is other data set.
This is a multi-record data, means there are atmost 12 different records for each account(color), which can be identified by Bolded characters.

I need to put pipes in between all existing and non-existing records of particular account, like this,
L4058S462 34329094 F51010141TK1070000483L4058S462 34329094 0232384840 381892 182 5690|L4058S462 34329094 F51020141FIRST CLEARING, LLC A/C 3432-9094|L4058S462 34329094 F51030141JOHAN HOLMQVIST YVSTANGSVAGEN 6|L4058S462 34329094 F51040141VALBO 81892 SWEDEN AIRMAIL 000000000|||||L4058S462 34329094 F51090141 0000 0|||
L4058T155 86374984 F51010141TK1070000443L4058T155 86374984 0232384840 4 182 5690|L4058T155 86374984 F51020141FIRST CLEARING, LLC A/C 8637-4984|L4058T155 86374984 F51030141CONFIDENTIAL & CONFIDENTIAL JT TEN|L4058T155 86374984 F510401412801 MARKET STREET SAINT LOUIS MO 63103||||||||

I need to put pipes for existing and non-existing records as well.

Thanks for the help.

Last edited by saravanamr; 06-29-2009 at 02:45 AM..
saravanamr
# 2  
Old 06-29-2009
1st field is the keyfld ?

Code:
#!/usr/bin/ksh
previd=""
record=""
delimeter="|"
maxrec=12
id=""
restvalues=""

function initrec
{
  i=1
  while ((i<=maxrec))
  do
        rec[$i]=""
        ((i+=1))
  done
}

function printrec
{
  i=1
  record=""
  while ((i<=maxrec))
  do
        record="$record${rec[$i]}$delimeter"
        ((i+=1))
  done
  print "$record"
  initrec
}


function saverec
{
    recnr=${restvalues:12:2}
    rec[$recnr]="$id $restvalues"
}


##MAIN####
initrec

while read id restvalues
do
       [ "$previd" = "" ] && previd="$id"  # 1st line
       [ "$id" != "$previd" ] && printrec && previd="$id" && continue # nextline
       saverec
       previd="$id"
done
# and last ...
printrec

Code:
chmod a+rx thisscript
cat somefile |  sort -t " " -k 1,1 | ./thisscript > out.txt


Last edited by kshji; 06-29-2009 at 05:27 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Check existing

deleted (2 Replies)
Discussion started by: ust3
2 Replies

2. Shell Programming and Scripting

Append to existing line

I have a file which has lines that end with a plus (+) sign. I would like to get the next line appended to the one with the plus. For example bla bla bla bla bla + blip blip blip would become bla bla bla bla bla blip blip blip However not all lines end with a plus sign . I would... (2 Replies)
Discussion started by: bombcan
2 Replies

3. UNIX for Dummies Questions & Answers

Appending lines from an existing list to each line in another existing list

Evening all ! I would like to ask your expertise on how to accomplish the following ; I have 2 lists, and would like each line from list2 to be appended to each line in list1, resulting in list3 ; List1; alpha beta charlie List2; one two three (4 Replies)
Discussion started by: TAPE
4 Replies

4. Shell Programming and Scripting

Adding existing set of records in the same file

I have a file with 50,000 records in it, i have a requirement to use the same 50,000 records and add them 4 times to the same file to make a total of 200,000 records. I was wondering how to do this using ksh. Any help is greatly appreciated. (2 Replies)
Discussion started by: vpv0002
2 Replies

5. Solaris

Add existing user into an existing group

Pre: no gpasswd/adduser there is just usermod can be used, also there is no -a option for usermod. How should I add a user into a group? (4 Replies)
Discussion started by: a2156z
4 Replies

6. Shell Programming and Scripting

how to insert text between lines of an existing file using perl

Hi , I need some inputs on how to open a file (file.txt) and parse the text example aaa of the file and bbb of the file and add the text zzzz once i parse (aaa and bbb) and followed by the remaining of the text as it is in the file using perl programming. Thanks in advance (3 Replies)
Discussion started by: madhul2002
3 Replies

7. Shell Programming and Scripting

Need to insert new text and change existing text in a file using SED

Hi all, I need to insert new text and change existing text in a file. For that I used the below line in the command line and got the expected output. sed '$a\ hi... ' shell > shell1 But I face problem when using the same in script. It is throwing the error as, sed: command garbled:... (4 Replies)
Discussion started by: iamgeethuj
4 Replies

8. Shell Programming and Scripting

folder existing and file existing

I want to look into a folder to see if there are any folders within it. If there are, I need to check inside each folder to see if it contains a .pdf file So If /myserver/myfolder/ contains a folder AND that folder conatins a .pdf file do X Else do Z I may have multiple folders and... (4 Replies)
Discussion started by: crowman
4 Replies

9. Shell Programming and Scripting

script to run shell command and insert results to existing xml file

Hi. Thanks for any help with this. I'm not new to programming but I am new to shell programming. I need a script that will 1. execute 'df -k' and return the volume names with specific text 2. surround each line of the above results in opening and closing xml tags 3. insert the results of step... (5 Replies)
Discussion started by: littlejon
5 Replies

10. Programming

link a new .so with an existing .so

I have an existing C module that already built libudf.so Now I have modify this module to call a third party software function (which is new.so), and re build to target to libudf.so I compiled that includes all header files of third party software. Linking to new.so is also good, But when... (0 Replies)
Discussion started by: baosoccer
0 Replies
Login or Register to Ask a Question