Help with File Data Extract


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Help with File Data Extract
# 1  
Old 11-15-2011
Help with File Data Extract

Hello,

Hope you are doing fine. I have been struggling with it for some time now and I would really appreciate your help.

Following is file format:

Code:
Currency,Name,Date,     Term
USD,      ABC, 2011/11/11, T0, S1,   S2,  S3,  S4
   ,        ,            ,T1, 5.6,  2.3, 6.5, 4.5
   ,        ,            ,T2, 5.5,  2.4, 6.4, 4.4
   ,        ,            ,T3, 5.3,  2.3, 6.3, 4.3
Currency,Name,Date,     Term
USD,      XYZ, 2011/11/11, T0, S1,   S2,  S3  
   ,        ,            ,T1, 5.6,  2.3, 6.5 
   ,        ,            ,T2, 5.5,  2.4, 6.4 
.....

Please note this is a comma separated file and no spaces. Tn and Sn are numbers but I have named such for clarity. We need to extract matrix data in following format

Name, Date, Tn, Sn, Rate

i.e.

Code:
ABC, 2011/11/11, T1,S1, 5.6
ABC, 2011/11/11, T1,S2, 2.3
ABC, 2011/11/11, T1,S3, 6.5
ABC, 2011/11/11, T1,S4, 4.5
ABC, 2011/11/11, T2,S1, 5.5
ABC, 2011/11/11, T2,S2, 2.4
ABC, 2011/11/11, T2,S3, 6.5
ABC, 2011/11/11, T2,S4, 4.4
ABC, 2011/11/11, T3,S1, 5.3
ABC, 2011/11/11, T3,S2, 2.3
ABC, 2011/11/11, T3,S3, 6.3
ABC, 2011/11/11, T3,S4, 4.3
XYZ, 2011/11/11, T1,S1, 5.6
XYZ, 2011/11/11, T1,S2, 2.3
XYZ, 2011/11/11, T1,S3, 6.5
XYZ, 2011/11/11, T2,S1, 5.5
XYZ, 2011/11/11, T2,S2, 2.4
XYZ, 2011/11/11, T2,S3, 6.4

Thanks in advance for any help.
# 2  
Old 11-15-2011
nawk -F, -f sr.awk OFS=, myFile.txt.
sr.awk:
Code:
$1 ~ /Currency/ {f++;next}
f { split($0,a, FS);f--;next}
{
   for(i=5;i<=NF;i++)
      print a[2], a[3], $4, a[i], $i
}

# 3  
Old 11-15-2011
Hello vgersh99,

Thanks for your reply. I would like to understand what the code is doing, what is sr.awk?

Is nawk line and code block together? Would appreciate explanation. Thanks
# 4  
Old 11-15-2011
save the posted code in any file - I named mine sr.awk.
And run it as posted: nawk -F, -f sr.awk OFS=, myFile.txt.
Or you can do everything inline:
Code:
nawk -F, '
   $1 ~ /Currency/ {f++;next}
   f { split($0,a, FS);f--;next}
   {
      for(i=5;i<=NF;i++)
         print a[2], a[3], $4, a[i], $i
   }' OFS=, myFile.txt

# 5  
Old 11-15-2011
Hello vergesh99,

Thanks for clarification, I now understand sr.awk means a separate source file.

I am trying to understand the code. So basically you look for the word "Currency" and you stop on the next line after you have found "Currency", correct?

Then you split the line but Quick question what is "f" and what does "f++" and "f--" mean? Move one line forward or one line backward?

Really appreciate your help and time!
# 6  
Old 11-15-2011
Quote:
Originally Posted by srattani
Hello vergesh99,

Thanks for clarification, I now understand sr.awk means a separate source file.

I am trying to understand the code. So basically you look for the word "Currency" and you stop on the next line after you have found "Currency", correct?
correct. we find 'Currency' and set a flag 'f' to be positive (!=0)
Quote:
Then you split the line but Quick question what is "f" and what does "f++" and "f--" mean? Move one line forward or one line backward?
if 'f' is positive (!=0) execute the following code (within {}). Once done, reset 'f' to 0 so that we don't execute the same block of code the follwing lines.
Quote:
Really appreciate your help and time!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Extract data from a file

Hi , I am having a file which is PIPE delimited like this : file.txt aus|start|10:00:00 nz|start|11:00:00 aus|end|10:10:00 us|start|10:00:00 nz|end|11:10:00 us|end|11:00:00 . . . I want to extract an output file like this based on start time and end time for each countries: (9 Replies)
Discussion started by: rohit_shinez
9 Replies

2. Shell Programming and Scripting

Extract data from a file

I have a text file that contains the following data. For example, aa.txt has some numbers. I need to extract the continuous numbers(minimum 3 numbers) from it.How can I do this with awk? >aa.txt 31 35 36 37 38 39 44 169 170 173 174 175 177 206 >1a.txt 39 (5 Replies)
Discussion started by: rahmanabdulla
5 Replies

3. Shell Programming and Scripting

Extract data from a file

Hello All, I have a small xml file which looks like below: <Check:defaultval Val="crash" value="crash_report_0013&#xA;generate_check_0020 generate_check_0022&#xA;&#xA;This is where the fault is."/> <Check:defaultval Val="crash" value="crash_report_1001&#xA;generate_check_1001... (9 Replies)
Discussion started by: suvendu4urs
9 Replies

4. Shell Programming and Scripting

Extract header data from one file and combine it with data from another file

Hi, Great minds, I have some files, in fact header files, of CTD profiler, I tried a lot C programming, could not get output as I was expected, because my programming skills are very poor, finally, joined unix forum with the hope that, I may get what I want, from you people, Here I have attached... (17 Replies)
Discussion started by: nex_asp
17 Replies

5. Shell Programming and Scripting

Extract data based on match against one column data from a long list data

My input file: data_5 Ali 422 2.00E-45 102/253 140/253 24 data_3 Abu 202 60.00E-45 12/23 140/23 28 data_1 Ahmad 256 7.00E-45 120/235 140/235 22 data_4 Aman 365 8.00E-45 15/65 140/65 20 data_10 Jones 869 9.00E-45 65/253 140/253 18... (12 Replies)
Discussion started by: patrick87
12 Replies

6. Shell Programming and Scripting

Extract Data from a file

I need to create a script to extract some specific data from a file. I locate the file using the find command: find . -name "rpbol*" -print | xargs grep -li Once I locate the file I need using the above command, I would like to extract some data from that file. The data is always located... (2 Replies)
Discussion started by: jevaba
2 Replies

7. Shell Programming and Scripting

extract data from file

I m new to shell scripting & i need a help.... i have file like.... Name := sachin address:=something phone:=111 ... Note: There might be or not space between Name & := and between := & sachin. I need to extract the data from each line of file as var1=Name value1=sachin same for... (13 Replies)
Discussion started by: ps_sach
13 Replies

8. Shell Programming and Scripting

extract data from file

Hello again, how do you extract data from a file? I have created a file with PID #s in it, I need to be able to take the PID from each line and kill it. How is this done? (4 Replies)
Discussion started by: raidzero
4 Replies

9. Shell Programming and Scripting

Extract data from file

Dear All , I am posting first time in this forum . Please ignore my mistakes . I am learning Unix and i need help to extract specific data from file . 1. I want to grep number of fails from log . The file contains "fails" word in line if test cases are failed . 2. The log contains... (20 Replies)
Discussion started by: getdpg
20 Replies

10. Shell Programming and Scripting

extract data from file

My file in ksh consists of message data of varying lengths (lines), separated with headers. I would like to find a string from this file, and print out the whole message data including the headers. my plan of attack is to search the strings, print the top header, and print the whole message... (2 Replies)
Discussion started by: apalex
2 Replies
Login or Register to Ask a Question