10 More Discussions You Might Find Interesting
1. UNIX for Beginners Questions & Answers
I Want to merge multiple lines based on the 1st field and keep into single record.
SRC File:
AAA_POC_DB.TAB1
AAA_POC_DB.TAB2
AAA_POC_DB.TAB3
AAA_POC_DB.TAB4
BBB_POC_DB.TAB1
BBB_POC_DB.TAB2
CCC_POC_DB.TAB6
OUTPUT
-----------------
'AAA_POC_DB','TAB1','TAB2','TAB3','TAB4'... (10 Replies)
Discussion started by: raju2016
10 Replies
2. UNIX for Dummies Questions & Answers
Hello :)
I am in this situation:
Input: two tab-delimited files, `File1` and `File2`. `File2` (`$2`) has to be parsed by patterns found in `File1` (`$1`).
Expected output: tab-delimited file, `File3`. `File3` has to contain the same rows as `File2`, plus the corresponding value in... (5 Replies)
Discussion started by: dovah
5 Replies
3. UNIX for Dummies Questions & Answers
Hi,
I have a file which I'd like to merge lines based on duplicates in one column while keeping the info for other columns. Let me simplify it by an example:
File
ESR1 ANASTROZOLE NA FDA_approved
ESR1 CISPLATIN NA FDA_approved
ESR1 DANAZOL agonist NA
ESR1 EXEMESTANE NA FDA_approved... (3 Replies)
Discussion started by: JJ001
3 Replies
4. UNIX for Dummies Questions & Answers
I have 2 files,
file01= 7 columns, row unknown (but few)
file02= 7 columns, row unknown (but many)
now I want to create an output with the first field that is shared in both of them and then subtract the results from the rest of the fields and print there
e.g.
file 01
James|0|50|25|10|50|30... (1 Reply)
Discussion started by: A-V
1 Replies
5. Shell Programming and Scripting
I have two files.
FileA.txt
30910 rs7468327
36587 rs10814410
91857 rs9408752
105797 rs1133715
146659 rs2262038
152695 rs2810979
181843 rs3008128
182129 rs3008131
192118 rs3008170
FileB.txt
30910 1.9415219673 0
36431 1.3351312477 0.0107191428
36587 1.3169171182... (2 Replies)
Discussion started by: genehunter
2 Replies
6. Shell Programming and Scripting
I have the following space-delimited input:
1 11.785710 117.857100
1 15 150
1 20 200
1 25 250
3 2.142855 21.428550
3 25 250
22 1.071435 10.714350
The first field is the ID number, the second field is the percentage of the total points that the person has and the third column is the number... (3 Replies)
Discussion started by: mdlloyd7
3 Replies
7. Shell Programming and Scripting
I had two files file1 and file2. I want a o/p file(file3) like below using first column as ref. Pls give suggestion ass join is not working as the number of lines in each file is nealry 5 C?
file1
---------------------
404000324810001 Y
404000324810004 N
404000324810008 Y
404000324810009 N... (1 Reply)
Discussion started by: p_sai_ias
1 Replies
8. Shell Programming and Scripting
Hi All,
I do have 2 files
file 1 has 4 tab delimited columns
234 a c dfgyu
294 b g fih
302 c h jzh
328 z c san
597 f g son
File 2 has 2 tab delimted columns
234 23
302 24
597 24
I want to merge file 2 with file 1 based on the data common in both files which is the first column so... (6 Replies)
Discussion started by: Lucky Ali
6 Replies
9. Shell Programming and Scripting
Guys,
i have a file in below format where the barcode's are uniq per site but could be repeated for different site. so i want to convert the site column to rows based on the barcode's as below output.
your help is appreciated!!!
input:
SITE BARCODE QTY SP CP
10001 6281103890017 10 50 48... (5 Replies)
Discussion started by: malcomex999
5 Replies
10. Shell Programming and Scripting
Hi,
I have two files consisting of two columns. So I want to merge column 2 if column 1 is the same. So heres an example of what I mean.
FILE1
driver 444
car 333
hat 222
FILE2
driver 333
car 666
hat 999
So I want to merge the column 2's together so... (4 Replies)
Discussion started by: phil_heath
4 Replies
funtablerowput(3) SAORD Documentation funtablerowput(3)
NAME
FunTableRowPut - put Funtools rows
SYNOPSIS
int FunTableRowPut(Fun fun, void *rows, int nev, int idx, char *plist)
DESCRIPTION
The FunTableRowPut() routine writes rows to a FITS binary table, taking its input from an array of user structs that contain column values
selected by a previous call to FunColumnSelect(). Selected column values are automatically converted from native data format to FITS data
format as necessary.
The first argument is the Fun handle associated with this row data. The second rows argument is the array of user structs to output. The
third nrow argument specifies the number number of rows to write. The routine will write nrow records, starting from the location speci-
fied by rows.
The fourth idx argument is the index of the first raw input row to write, in the case where rows from the user buffer are being merged with
their raw input row counterparts (see below). Note that this idx value is has nothing to do with the row buffer specified in argument 1.
It merely matches the row being written with its corresponding (hidden) raw row. Thus, if you read a number of rows, process them, and
then write them out all at once starting from the first user row, the value of idx should be 0:
Ev ebuf, ev;
/* get rows -- let routine allocate the row array */
while( (ebuf = (Ev)FunTableRowGet(fun, NULL, MAXROW, NULL, &got)) ){
/* process all rows */
for(i=0; i<got; i++){
/* point to the i'th row */
ev = ebuf+i;
...
}
/* write out this batch of rows, starting with the first */
FunTableRowPut(fun2, (char *)ebuf, got, 0, NULL);
/* free row data */
if( ebuf ) free(ebuf);
}
On the other hand, if you write out the rows one at a time (possibly skipping rows), then, when writing the i'th row from the input array
of rows, set idx to the value of i:
Ev ebuf, ev;
/* get rows -- let routine allocate the row array */
while( (ebuf = (Ev)FunTableRowGet(fun, NULL, MAXROW, NULL, &got)) ){
/* process all rows */
for(i=0; i<got; i++){
/* point to the i'th row */
ev = ebuf+i;
...
/* write out the current (i.e., i'th) row */
FunTableRowPut(fun2, (char *)ev, 1, i, NULL);
}
/* free row data */
if( ebuf ) free(ebuf);
}
The final argument is a param list string that is not currently used. The routine returns the number of rows output. This should be equal
to the value passed in the third nrow</B argument.
When FunTableRowPut() is first called for a given binary table, Funtools checks to see of the primary header has already been written
(either by writing a previous row table or by writing an image.) If not, a dummy primary header is written to the file specifying that an
extension should be expected. After this, a binary table header is automatically written containing information about the columns that
will populate this table. In addition, if a Funtools reference handle was specified when this table was opened, the parameters from this
Funtools reference handle are merged into the new binary table header.
In a typical Funtools row loop, you read rows using FunTableRowGet()() and write rows using FunTableRowPut(). The columns written by FunT-
ableRowPut()() are those defined as writable by a previous call to FunColumnSelect(). If that call to FunColumnSelect also specified
merge=[update|replace|append], then the entire corresponding raw input row record will be merged with the output row according to the merge
specification (see FunColumnSelect() above).
A call to write rows can either be done once, after all rows in the input batch have been processed, or it can be done (slightly less effi-
ciently) one row at a time (or anything in between). We do recommend that you write all rows associated with a given batch of input rows
before reading new rows. This is required if you are merging the output rows with the raw input rows (since the raw rows are destroyed
with each successive call to get new rows).
For example:
Ev buf, ev;
...
/* get rows -- let routine allocate the row array */
while( (buf = (Ev)FunTableRowGet(fun, NULL, MAXROW, NULL, &got)) ){
/* point to the i'th row */
ev = buf + i;
.... process
}
/* write out this batch of rows */
FunTableRowPut(fun2, buf, got, 0, NULL);
/* free row data */
if( buf ) free(buf);
}
or
Ev buf, ev;
...
/* get rows -- let routine allocate the row array */
while( (buf = (Ev)FunTableRowGet(fun, NULL, MAXROW, NULL, &got)) ){
/* process all rows */
for(i=0; i<got; i++){
/* point to the i'th row */
ev = buf + i;
... process
/* write out this batch of rows with the new column */
if( dowrite )
FunTableRowPut(fun2, buf, 1, i, NULL);
}
/* free row data */
if( buf ) free(buf);
}
Note that the difference between these calls is that the first one outputs got rows all at once and therefore passes idx=0 in argument
four, so that merging starts at the first raw input row. In the second case, a check it made on each row to see if it needs to be output.
If so, the value of idx is passed as the value of the i variable which points to the current row being processed in the batch of input
rows.
As shown above, successive calls to FunTableRowPut() will write rows sequentially. When you are finished writing all rows in a table, you
should call FunFlush() to write out the FITS binary table padding. However, this is not necessary if you subsequently call FunClose() with-
out doing any other I/O to the FITS file.
Note that FunTableRowPut() also can be called as FunEventsPut(), for backward compatibility.
SEE ALSO
See funtools(7) for a list of Funtools help pages
version 1.4.2 January 2, 2008 funtablerowput(3)