Divide data with specific column values into separate files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Divide data with specific column values into separate files
# 1  
Old 04-24-2012
Divide data with specific column values into separate files

hello!
i need a little help from you Smilie ... i need to split a file into separate files depending on two conditions using scripting. The file has no delimiters. The conditions are col 17 = "P" and col 81 = "*", this will go to one output file; col 17 = "R" and col 81 = " ". Here is an example.

Code:
132855300       PASSOCIATED ASSOCIATEDL091000022160233784638     075911600000003*0D
140422500       PCHAD NOBASIC PT LTD   0759179119201017796       075911600000004*0D
144243100       RWASHINGTON CARDWELT SC0759061710110013401       075911600000001 17
40402357604     RMD ADVICE       95148R27507971438278102         075000020000002*0D
48412698886     RTHOMAS KLOEH  1918883R07591176887066770         075000020000003 0D
41406992615     RSAMIHA KADAD 26174726Y07500001900000000044697352075000020000001 13

Thanks in advance for your help,

Moderator's Comments:
Mod Comment Please use next time
code tags for your code and data

Last edited by vbe; 04-24-2012 at 02:15 PM..
# 2  
Old 04-24-2012
Hi, try this:
Code:
awk '{a=substr($0,17,1); b=substr($0,81,1)} a=="P" && b=="*"{print > "outfile1"} a=="R" && b==" "{print > "outfile2"}' infile

or:

Code:
awk 'sub(/^.{16}P.{63}\*/,"&"){print > "outfile1371a"} sub(/^.{16}R.{63} /,"&"){print > "outfile1371b"}' infile

( if your awk is GNU awk it needs to be called as awk --posix )



Or perhaps your awk can do this:
Code:
awk '$17=="P" && $81=="*"{print > "outfile1"} $17=="R" && $81==" "{print > "outfile2"}' FS= infile


Last edited by Scrutinizer; 04-24-2012 at 04:02 PM..
This User Gave Thanks to Scrutinizer For This Post:
# 3  
Old 04-24-2012
thanks a lot! it works great Smilie
i just have a quick question ... how can i extract only the first record into a new file? Smilie
# 4  
Old 04-24-2012
You could prepend:
Code:
FNR>1{exit}

This User Gave Thanks to Scrutinizer For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to separate data coming in one column of CSV file?

I am running an ISQL command on Sybase DB and getting output of a query in an CSV file. The issue is that all the data comes in to the same column, i want them to be separated in different columns. SQL_COMMAND=command.sql file=file.txt formatFile=formatFile.txt report=report.csv echo... (1 Reply)
Discussion started by: Sharma331
1 Replies

2. Shell Programming and Scripting

How to separate rows of data into another column?

I have data such as below where the value in second field is the same as that in the row after. 123456,22222,John,0,xyz 234567,22222,John1,1,cde 43212,3333,Jean,3,pip 84324,3333,Abel,2,cat I'd like to rearrange the output like below to put such records beside each other and separated with... (5 Replies)
Discussion started by: james2009
5 Replies

3. Shell Programming and Scripting

Sum values of specific column in multiple files, considering ranges defined in another file

I have a file (let say file B) like this: File B: A1 3 5 A1 7 9 A2 2 5 A3 1 3 The first column defines a filename and the other two define a range in that specific file. In the same directory, I have also three more files (File A1, A2 and A3). Here is 10 sample lines... (3 Replies)
Discussion started by: Bastami
3 Replies

4. UNIX for Dummies Questions & Answers

Divide a numerical data column by a variable

Hello, I have two files, f1 and f2. f1 has 5 columns like so: a b c d 154 e f g h 365 ..... f2 has two columns, the first column contains the name of the above file and second column contains a constant which is to be used for division. e.g. file1 56 I want to divide the 5th... (2 Replies)
Discussion started by: Gussifinknottle
2 Replies

5. Shell Programming and Scripting

Print every 5 4th column values as separate row with different first column

Hi, I have the following file, chr1 100 200 20 chr1 201 300 22 chr1 220 345 23 chr1 230 456 33.5 chr1 243 567 90 chr1 345 600 20 chr1 430 619 21.78 chr1 870 910 112.3 chr1 914 920 12 chr1 930 999 13 My output would be peak1 20 22 23 33.5 90 peak2 20 21.78 112.3 12 13 Here the... (3 Replies)
Discussion started by: jacobs.smith
3 Replies

6. UNIX for Dummies Questions & Answers

using sed delete a line from csv file based on specific data in two separate fields

Hello, :wall: I have a 12 column csv file. I wish to delete the entire line if column 7 = hello and column 12 = goodbye. I have tried everything that I can find in all of my ref books. I know this does not work /^*,*,*,*,*,*,"hello",*,*,*,*,"goodbye"/d Any ideas? Thanks Please... (2 Replies)
Discussion started by: Chris Eagleson
2 Replies

7. Shell Programming and Scripting

Replace column that matches specific pattern, with column data from another file

Can anyone please help with this? I have 2 files as given below. If 2nd column of file1 has pattern foo1@a, find the matching 1st column in file2 & replace 2nd column of file1 with file2's value. file1 abc_1 foo1@a .... abc_1 soo2@a ... def_2 soo2@a .... def_2 foo1@a ........ (7 Replies)
Discussion started by: prashali
7 Replies

8. Shell Programming and Scripting

Divide data into separate files

frnds: i want to divide data on the behalf of dotted line and redirectd into new files ) ------------------------- M-GET CONFIRMATION ( ------------------------- M-GET CONFIRMATION ( INVOKE IDENTIFIER final data shuld be into 3 files ...... (6 Replies)
Discussion started by: dodasajan
6 Replies

9. Shell Programming and Scripting

How to split a data file into separate files with the file names depending upon a column's value?

Hi, I have a data file xyz.dat similar to the one given below, 2345|98|809||x|969|0 2345|98|809||y|0|537 2345|97|809||x|544|0 2345|97|809||y|0|651 9685|98|809||x|321|0 9685|98|809||y|0|357 9685|98|709||x|687|0 9685|98|709||y|0|234 2315|98|809||x|564|0 2315|98|809||y|0|537... (2 Replies)
Discussion started by: nithins007
2 Replies

10. Shell Programming and Scripting

Divide large data files into smaller files

Hello everyone! I have 2 types of files in the following format: 1) *.fa >1234 ...some text... >2345 ...some text... >3456 ...some text... . . . . 2) *.info >1234 (7 Replies)
Discussion started by: ad23
7 Replies
Login or Register to Ask a Question