Rearranging columns


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Rearranging columns
# 1  
Old 05-22-2009
Rearranging columns

Hi,
I have an input file as follows :

input.txt

abcdTXXqwe
axdfSYYrew
dasgTXXqwt
gtfsTYYwer
gadfSXXerw
gwerSYYTXX

Now I have to get four output files.

output1.txt should have the first four cloumns, Where the rows containing 5th column as T and 6th-7th columns as XX
output2.txt should have the first four cloumns, Where the rows containing 5th column as T and 6th-7th columns as YY
output3.txt should have the first four cloumns, Where the rows containing 5th column as S and 6th-7th columns as XX
output4.txt should have the first four cloumns, Where the rows containing 5th column as S and 6th-7th columns as YY

i.e.

output1.txt

abcd
dasg


output2.txt

gtfs

output3.txt

gadf


output4.txt

axdf
gwer

I tried using cut and awk, but its too lengthy.

Is there any better solution?
# 2  
Old 05-22-2009
Quote:
Originally Posted by sudhamacs
I tried using cut and awk, but its too lengthy.
Is there any better solution?
Yes, with awk Smilie, but maybe shorter then yours:
Code:
awk 'BEGIN{
  a[TXX]="output1.txt"
  a[TYY]="output2.txt"
  a[SXX]="output3.txt"
  a[SYY]="output4.txt"}
{print substr($0,1,4) > a[substr($0,5,3)]}' file

# 3  
Old 05-22-2009
Its erroring out saying
Quote:
awk: cmd. line:6: (FILENAME=input.txt FNR=1) fatal: expression for `>' redirection has null string value
# 4  
Old 05-22-2009
Check the format of your file at the positions 5 to 7, do you have more then 4 combinations?
Try this, it gives filenames as TXX SYY TYY etc, the 5 to the 7 positions of the lines:

Code:
awk '{print substr($0,1,4) > a[substr($0,5,3)]}' file

# 5  
Old 05-23-2009
Code:
awk 'a=substr($1,5,3);b=substr($1,1,4);
a=="TXX"{print b > "output1.txt"}
a=="TYY"{print b> "output2.txt"}
a=="SXX"{print b> "output3.txt"}
a=="SYY"{print b> "output4.txt"}' input



-Devaraj Takhellambam
# 6  
Old 05-26-2009
Thanks.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Rearranging the column

I have a text file like this, I would like to rearrange the first column (Name) according to the third column(percentage)in descending order. I mean methionine with the highest percentage should be the first one to appear under the name column. But I also want to exclude the headers from this... (2 Replies)
Discussion started by: cathum
2 Replies

2. Shell Programming and Scripting

Rearranging Data Set

Hello everybody, I've got the following problem: The data set I have is an ASCII file containing a header over 4 lines and the actual data comprised of dezimal numbers in a 1000x1000 grid (1000 lines and 1000 columns). Since I want to plot the data in GMT I need to convert it into the... (3 Replies)
Discussion started by: Evilknievel
3 Replies

3. Shell Programming and Scripting

Help with rearranging file with script

Hi Guys I normally do thins with a Windows program but I am trying to rearrange a filename based on delimiters in Ubuntu. Example v017 __ Detective Academy Q #133 Murder in the Village Of Suspension Bridges &&& Part 9.cbz = Detective Academy Q v017 #133 Murder in the Village Of Suspension... (9 Replies)
Discussion started by: itschrisonline
9 Replies

4. Shell Programming and Scripting

Help with splitting and rearranging a field in awk

Please help! I figured I would take this one to the experts. I'm working with a field that contains contents such as: LastName FirstName For example: Smith John I'm trying to take this field and split it so that it is two separate fields (first name and last name). I then need to print... (5 Replies)
Discussion started by: IX3R0XI
5 Replies

5. Shell Programming and Scripting

Rearranging of values as desired

i have a file as below :- 100 D 22 100 T 33 100 C 89 101 C 55 101 D 44 102 D 88 103 T 22 103 C 13 output format :- <number> <D value> <C Value> <T Value> if no value then zero. I want output as :- 100 22 33 89 101 44 55 0 102 88 0 0 103 0 13 22 (3 Replies)
Discussion started by: satishmallidi
3 Replies

6. Shell Programming and Scripting

Counting and rearranging the rows

Hi, I have a file that I re-arranged using awk and unix commands to produce a file that looks like this: JOE JOE JOE JOE JOE BOB BOB HI HI HI I want to count how many of the same rows there are and print it on the second column while only maintaining the original name once. The... (5 Replies)
Discussion started by: phil_heath
5 Replies

7. Shell Programming and Scripting

Rearranging into new columns (awk?)

Hi experts, I've used several solutions from this forum to delete nonsense and rearrange data in the project file I'm working on. I'm hoping you guys can give me some tips on further rearranging the data (I've seen a few solutions by searching, but one specific item has me stumped, which is only... (5 Replies)
Discussion started by: coryvp
5 Replies

8. Shell Programming and Scripting

Rearranging

Hello, I spent all day trying to write a script and cannot find the solution :( I have plenty files looking like this: several hundred lines precede the following interesting Bla xxx: Blub = -7537.37687 Blub = -100.644746 Blub = -3247.61954 . . . Blub = 1324.82567 Blub =... (2 Replies)
Discussion started by: tempestas
2 Replies

9. UNIX for Dummies Questions & Answers

Rearranging whole columns

Hello all, I have a text file that is arranged: name 3 7 2 9 5 jim a d e g k max d g u x g rob f w v k o This is just an example as my real file has >1000 individuals and >64,000 columns. I need to rearrange the file so that the columns appear in numerical order so that name... (3 Replies)
Discussion started by: doobedoo
3 Replies

10. Shell Programming and Scripting

Rearranging fields from a pipe

I have a large file that I am pulling only certain fields out of but my output I would like to rearrange the field order via a pipe. I have been looking through the site and man pages and have come to a loss. I am running on HP cut -c33-38,44-46,62-65,91-98 <file> | grep -e <value> >... (4 Replies)
Discussion started by: bthomas
4 Replies
Login or Register to Ask a Question