Data manipulation, Please help..


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Data manipulation, Please help..
# 8  
Old 03-24-2016
OK, so that means create 1 - n lines numbered 1 - n, of 1 - n elements, but break each line at 4 elements, and repeat the line number in front of each broken sub line?
What if the count of input elements is less or more than 55, in above case?
# 9  
Old 03-24-2016
Quote:
Originally Posted by RudiC
OK, so that means create 1 - n lines numbered 1 - n, of 1 - n elements, but break each line at 4 elements, and repeat the line number in front of each broken sub line?
What if the count of input elements is less or more than 55, in above case?
It should be exact with 1+2+...+n, that says 55 for n=10 because it is generated by a quantum chemical calculation. If number of numbers are large than 55, then just neglect the numbers in the position beyond 55. Normally, again it should be exactly match. The hard problem for me is the break of each line at 4 when n > 4.
Thanks.
# 10  
Old 03-24-2016
Try
Code:
awk -F, -vn=10 '
        {for (i=1; i<=n; i++)   {printf "%s", i
                                 for (j=0; j<i; j++) printf "%s%+f", (j%4?"":j?ORS i:"") OFS, $(++c)
                                 printf RS
                                }
        }
' OFS="\t" file
1    +0.498766
2    -0.031608    +0.609925
3    +0.003612    +0.014010    +0.542741
4    -0.048814    -0.014547    +0.025696    +0.049521
5    -0.014581    -0.144680    +0.131557    +0.019123
5    +0.151256
6    +0.000000    +0.000000    +0.000000    +0.000000
6    +0.000000    +0.000000
7    +0.000000    +0.000000    +0.000000    +0.000000
7    +0.000000    +0.000000    +0.000000
8    +0.000000    +0.000000    +0.000000    +0.000000
8    +0.000000    +0.000000    +0.000000    +0.000000
9    +0.000000    +0.000000    +0.000000    +0.000000
9    +0.000000    +0.000000    +0.000000    +0.000000
9    +0.000000
10    +0.000000    +0.000000    +0.000000    +0.000000
10    +0.000000    +0.000000    +0.000000    +0.000000
10    +0.000000    +0.000000

This User Gave Thanks to RudiC For This Post:
# 11  
Old 03-24-2016
Quote:
Originally Posted by RudiC
Try
Code:
awk -F, -vn=10 '
        {for (i=1; i<=n; i++)   {printf "%s", i
                                 for (j=0; j<i; j++) printf "%s%+f", (j%4?"":j?ORS i:"") OFS, $(++c)
                                 printf RS
                                }
        }
' OFS="\t" file
1    +0.498766
2    -0.031608    +0.609925
3    +0.003612    +0.014010    +0.542741
4    -0.048814    -0.014547    +0.025696    +0.049521
5    -0.014581    -0.144680    +0.131557    +0.019123
5    +0.151256

MAGIC!!!
Code:
(j%4?"":j?ORS i:"") OFS, $(++c)

This is the most difficult Part I never understand.. But it does the trick! Thanks so much for your help!
ZHen
# 12  
Old 03-24-2016
Try also this simplification:
Code:
awk -F, -vn=10 '
        {for (i=1; i<=n; i++)
           for (j=0; j<i; j++) printf "%s%+f%s", (j%4?"":(j?ORS:"") i) OFS, $(++c), (i-j-1)?"":ORS
        }
' OFS="\t" file

It's making intensive use of the so called "conditional operator" expr?expr:expr that, if the first expr evaluates to true, supplies the second's, else the third's result.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

[Solved] Data manipulation

Hallo Team, I need your help. I have a file that has two colums. See sample below: 105550 0.28 105550 0.24 125550 0.28 125550 0.24 215650 0.28 215650 0.24 315550 0.28 315550 0.24 335550 0.28 335550 0.24 40555 0.21 40555 0.17 415550 0.21 415550 0.17 43555 0.21 43555 0.17 (5 Replies)
Discussion started by: kekanap
5 Replies

2. UNIX for Dummies Questions & Answers

Data Manipulation

Dear Sir, I have file input RGR001|108.28|-2.86489|100-120|RANGGAR RGR002|108.071|-2.69028|80-100|RANNGAR RGR003|108.168|-2.97053|50-80|RANNGAR RGR007|108.192722222|-2.766138889|0-50|RANGGARI want to create files by joining each rows with each rows below Output as below ... (4 Replies)
Discussion started by: radius
4 Replies

3. UNIX for Dummies Questions & Answers

Data manipulation

Hallo Team, I need to manipulate existing data file. Have a look at current data and expected data: Current Data: 27873517141 27873540000 27873515109 27873517140 27873540001 27873540000 27873501343 27873540000 27873517140 27873511292 27873645989 27873540000 27873540000... (7 Replies)
Discussion started by: kekanap
7 Replies

4. Shell Programming and Scripting

Data manipulation using shell

Dear all I have a dataset (in text format,delimited by tab) which have 100 variables (say, var0-var99) and more than 100,000 observations. I want to do the following: 1. for variable var0-var49, I want to add "00" in front of each data (for example, "1" would become "001") 2. for variable... (8 Replies)
Discussion started by: littlewenwen
8 Replies

5. Shell Programming and Scripting

Help with data manipulation script

Y,T,,H05,6,6,0,0 -> TH05_6 D,5,BT,B -> BT_KIOSK P,KQC222 -> KQC222 G,B,2 -> BRANI_GATE_2 fileA TPM658 Y,T,,H05,6,6,0,0 TPM110 D,5,BT,B TPM136 P,KQC222 TPM180 P,BQC913 TPM575 Y,B,,T05,14,14,0,0 IPM760 G,B,2 TPM011 I need to use second column $1,$2,$3,$4..... if first char... (6 Replies)
Discussion started by: ment0smintz
6 Replies

6. UNIX for Dummies Questions & Answers

Script for data manipulation

Hi all! my first post here, so mods -- if this should ideally be in the scripts section, please move there. Thanks! I have data in the following format: key1:value1 key2:value2 key3:value3 A B C D key1:value4 key2:value5 key3:value6 A1 B1 key1: ... and so on I want an output... (2 Replies)
Discussion started by: gnat01
2 Replies

7. Shell Programming and Scripting

Data manipulation from a file

i have a file in follwing format 0110 1020 1011 1032 1020 2005 2003 1050 i want the output in such a way that all non zero numbers will be converted into 1 like this 0110 1010 1011 1011 1010 1001 1001 1010 (3 Replies)
Discussion started by: vaibhavkorde
3 Replies

8. Shell Programming and Scripting

Tricky data manipulation...

Hi everyone.. I am new here, hello.. I hope this doesn't come across to you folks as a stupid question, I'm somewhat new to scripting :) I'm seeking some help in finding a way to manipulate data output for every two characters - example: numbers.lst contains the following output:... (3 Replies)
Discussion started by: explicit
3 Replies

9. UNIX for Dummies Questions & Answers

Data Manipulation

Hello I am currently having problems in mapulating a certain file which contains vaious data. Belos is a sample content Event=<3190> Client IP=<151.111.11.143> DNS=<abc.sbc.com> TransCount=<139> Client IP=<150.222.133.163> DNS=<xyz.yuu.com> TransCount=<3734> Event=<3120> Client... (11 Replies)
Discussion started by: khestoi
11 Replies

10. UNIX for Dummies Questions & Answers

data manipulation script

I have a folder called {homedata} Within this folder there are 12 subfolders 200601.......200612 Within each subfolder there are 8 sets of files Each filename commences with A B C D E F G or H, so {filename}* can be used. I am trying to write a script which will from the top level go... (1 Reply)
Discussion started by: grinder182533
1 Replies
Login or Register to Ask a Question