How to substract selective values in multi row, multi column file (using awk or sed?)


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to substract selective values in multi row, multi column file (using awk or sed?)
# 1  
Old 10-12-2012
How to substract selective values in multi row, multi column file (using awk or sed?)

Hi,

I have a problem where I need to make this input:

Code:
nameRow1a,text1a,text2a,floatValue1a,FloatValue2a,...,floatValue140a
nameRow1b,text1b,text2b,floatValue1b,FloatValue2b,...,floatValue140b

look like this output:

Code:
nameRow1a,text1b,text2a,(floatValue1a - floatValue1b),(floatValue2a - floatValue2b),...,(floatValue140a - floatValue140b)

I thought I could do this in awk, but I can't figure out how to read the 2 lines independently and assign them into arrays, to later be manipulated.

Any help is greatly appreciated, and thanks a lot in advance!
Moderator's Comments:
Mod Comment
Please use code tags when posting data and code samples!

Last edited by vgersh99; 10-12-2012 at 06:54 PM.. Reason: code tags, please!
# 2  
Old 10-12-2012
take a look at the getline man page.

Code:
BEGIN {OFS = ",";}
{
    nLine1 = split($0, Line1, ",");
    getline;
    $1 = Line1[1]; $3 = Line1[3];
    for (i=4;i<=nLine1;i++) $i = sprintf("(%s-%s)",Line1[i],$i);
    print;
}

# 3  
Old 10-12-2012
Please give us a few pairs of lines of actual data (and be sure to use code tags).

Do the names in the 1st field on the 1st line in a pair always literally end with "a" and do the names in the 1st field on the 2nd line in a pair always literally end with a "b"?

Are the two lines always adjacent in the input with the "a" line before the "b" line?

Do you literally want the expression that would produce the difference between the values or do you want to print the results of evaluating that expression in fields 4 through 140?
# 4  
Old 10-12-2012
awk -f ricardo.awk FS=, OFS=, mySampleFile
ricardo.awk:
Code:
!n{
  split($0,c,FS);
  n++
  next
}
n-- {
  printf("%s%c%s%c%s%c", c[1],OFS,$2,OFS,c[3],OFS)
  for(i=4;i<=NF;i++)
    printf("%.2f%c", c[i] - $i,(i==NF)?ORS:OFS)
}

# 5  
Old 10-15-2012
Thanks a lot vgersh99, your code did exactly what I was looking for!! And BTW, thanks so much for the quick replies, you guys are awesome! ALso tried scottaazz code and it works as good, but was easier for me to modify into multiple (>2) lines. Thanks again!

Last edited by nricardo; 10-15-2012 at 01:29 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

DB2 Query -Convert multi values from column to rows

Hi Team I am using DB2 artisan tool and struck to handle multi values present in columns that are comma(,) separated. I want to convert those column values in separate rows . For example : Column 1 Column2 Jan,Feb Hold,Sell,Buy Expected Result Column1 ... (3 Replies)
Discussion started by: Perlbaby
3 Replies

2. Programming

Multi head/multi window hello world

I am trying to write a large X app. I have successfully modified my xorg.conf to setup 4 monitors on an NVIDIA Quatro5200. I am trying to modify a simple hello world application to open a window on three of the four monitors. depending on the changes to loop the window creation section and event... (2 Replies)
Discussion started by: advorak
2 Replies

3. Shell Programming and Scripting

Replacing lines matching a multi-line pattern (sed/perl/awk)

Dear Unix Forums, I am hoping you can help me with a pattern matching problem. What am I trying to do? I want to replace multiple lines of a text file (that match a multi-line pattern) with a single line of text. These patterns can span several lines and do not always have the same number of... (10 Replies)
Discussion started by: thefang
10 Replies

4. Shell Programming and Scripting

Selective Replace awk column values

Hi, I have the following data: 2860377|"DATA1"|"DATA2"|"65343"|"DATA2"|"DATA4"|"11"|"DATA5"|"DATA6"|"65343"|"DATA7"|"0"|"8"|"1"|"NEGATIVE" 32340377|"DATA1"|"DATA2"|"65343"|"DATA2"|"DATA4"|"11"|"DATA5"|"DATA6"|"65343"|"DATA7"|"0"|"8"|"1"|"NEG-DID"... (3 Replies)
Discussion started by: sdohn
3 Replies

5. Shell Programming and Scripting

Gawk - to extract values from multi lined file -I

Hi, Request your help in getting help with the below text formatting using awk. I am still learning awk and your help here is appreciated. Thanks in advance. Desireoutput ---------------- Virtual Pool Destination Profile Profile Profile Profile 1. virtual-1 pool-1 212.254.110.174:https... (2 Replies)
Discussion started by: pratheeshp
2 Replies

6. Shell Programming and Scripting

Gawk - to extract values from multi lined file

Hi, I am new to awk and trying to extract some specific fields from the a large file. Can you please help me to write gawk code displaying the out put in the below format: Desired Output: name fallback_ip member member www-trymps.extlb.plstry.com-pool-1 180.254.112.50 ... (4 Replies)
Discussion started by: pratheeshp
4 Replies

7. Shell Programming and Scripting

Multi-line filtering based on multi-line pattern in a file

I have a file with data records separated by multiple equals signs, as below. ========== RECORD 1 ========== RECORD 2 DATA LINE ========== RECORD 3 ========== RECORD 4 DATA LINE ========== RECORD 5 DATA LINE ========== I need to filter out all data from this file where the... (2 Replies)
Discussion started by: Finja
2 Replies

8. UNIX for Dummies Questions & Answers

sed insert content of file.txt to multi files

Ive this sed & find command find /home/www/ -name footer.php -exec sed -i 's/<\/body>/file.txt\n<\/body>/' what I need to place content of file.txt before </body> in all footer.php files file.txt content is google analytic script which is like 7 lines any help to adjust my command to... (2 Replies)
Discussion started by: xmoe
2 Replies

9. Shell Programming and Scripting

Sorting multi-column values from a specific file

Hi, all. I need a shell script which gathers data from a remote XML file and then displays it according to my needs.. I need this for my job due to the fact that I need to keep track price changes of euro, usd, gold, etc. The XML file I am talking about is located at this page: cnnturk dot... (4 Replies)
Discussion started by: canimsin
4 Replies

10. UNIX for Dummies Questions & Answers

multi-file multi-edit

Good day! I am trying to learn how to use the "sed" editor, to perform multiple edits on multiple files in multiple directories. I have one script that tries to call up each file and process it according to the edits listed in a second script. I am using a small input text to test these, at... (12 Replies)
Discussion started by: kielitaide
12 Replies
Login or Register to Ask a Question

Featured Tech Videos