Need help with sorting a file


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need help with sorting a file
# 1  
Old 03-30-2010
Data Need help with sorting a file

I have a large file like this:

Code:
8801 sdfsdcsdc
8801 gbfgfbfgb
8801 awdawdawd
8801 lolollbny
8803 fnauinawuile
8807 zzzzvcjmc
8807 vmkmnmdguibvn
8815 sdnjsndcvn
8815 wenfunefuni
8815 asdnaksjdn
.............
.............

i.e. the first column is sorted numerically, but the second column is not. I want a the file to be like this:
Code:
8801 sdfsdcsdc gbfgfbfgb awdawdawd lolollbny
8803 fnauinawuile
8807 zzzzvcjmc vmkmnmdguibvn
8815 sdnjsndcvn wenfunefuni asdnaksjdn
.............
.............

I have tried several scripts, but they all take too much time (as I said earlier that the file is very large). Can you provide a smart solution?

Please help. Thanks in advance...

Last edited by radoulov; 03-30-2010 at 06:23 AM.. Reason: Please use code tags!
# 2  
Old 03-30-2010
Use gawk, nawk or /usr/xpg4/bin/awk on Solaris.

Code:
awk 'END { print _ }
$1 != __  && NR > 1 { print _; _ = x }
{ _ = _ ? _ FS $2 : $0; __ = $1 }
' infile


Last edited by radoulov; 03-30-2010 at 08:19 AM..
# 3  
Old 03-30-2010
This should work pretty faster ..

Code:
while(<DATA>)  {
        ($current_number, @remaining) = split ( / /, $_ );

        if ( $last_number == $current_number )  {
                chomp (@remaining);
                print " @remaining";
        } else {
                chomp;
                print "\n$_";
        }
        
        $last_number = $current_number;
}

__DATA__
8801 sdfsdcsdc
8801 gbfgfbfgb
8801 awdawdawd
8801 lolollbny
8803 fnauinawuile
8807 zzzzvcjmc
8807 vmkmnmdguibvn
8815 sdnjsndcvn
8815 wenfunefuni
8815 asdnaksjdn

Code:
8801 sdfsdcsdc gbfgfbfgb awdawdawd lolollbny
8803 fnauinawuile
8807 zzzzvcjmc vmkmnmdguibvn
8815 sdnjsndcvn wenfunefuni asdnaksjdn

# 4  
Old 03-30-2010
radoulov, thanks for your reply. But unfortunately, I don't get it. Can you make it a more detail please?
# 5  
Old 03-30-2010
Which part isn't clear? Is this the correct result?

Code:
% cat infile
8801 sdfsdcsdc
8801 gbfgfbfgb
8801 awdawdawd
8801 lolollbny
8803 fnauinawuile
8807 zzzzvcjmc
8807 vmkmnmdguibvn
8815 sdnjsndcvn
8815 wenfunefuni
8815 asdnaksjdn
% awk 'END { print _ }
$1 != __  && NR > 1 { print _; _ = x }
{ _ = _ ? _ FS $2 : $0; __ = $1 }
' infile
8801 sdfsdcsdc gbfgfbfgb awdawdawd lolollbny
8803 fnauinawuile
8807 zzzzvcjmc vmkmnmdguibvn
8815 sdnjsndcvn wenfunefuni asdnaksjdn


Last edited by radoulov; 03-30-2010 at 08:19 AM..
# 6  
Old 03-30-2010
I mean, you have just used underscores, which is not clear to me.
[I am beginner in UNIX]
# 7  
Old 03-30-2010
If you need a more readable version , you can use any valid identifier name:

Code:
awk 'END { 
  print record 
  }
$1 != previous && NR > 1 { 
  print record 
  record = "" 
  }
{ 
  record = record ? record FS $2 : $0 
  previous = $1 
  }' infile

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Need help in Sorting a file

Hi Unix Admins, I wanted to sort a file in a specific order, i.e the input file contains two fields and the first column is not unique and had to be sorted. example Input File ------- 2014-10-21:Rand1 2014-11-02:Rand2 2014-11-02:Rand3 2014-11-02:Rand4 2014-11-03:Rand5 2014-11-04:Rand6... (4 Replies)
Discussion started by: Naveenezone
4 Replies

2. Solaris

What about sorting a 5G file?

Hi Guys, My client (dear clients, I hate to love you) has the funky idea of sorting a 5G flat file. Certainly enough, this is taking forever and also fulls the / of our machine. Any idea of how we could proceed to make this a little bit more efficient? Maybe by forcing sort to "stay in... (7 Replies)
Discussion started by: plmachiavel
7 Replies

3. UNIX for Dummies Questions & Answers

Sorting data in file based on field in another file

Hi, I have two files, one of which I would like to sort based on the order of the data in the second. I would like to do this using a simple unix statement. My two files as follows: File 1: 12345 1 2 2 2 0 0 12349 0 0 2 2 1 2 12350 1 2 1 2 2 2 . . . File2: 12350... (3 Replies)
Discussion started by: kasan0
3 Replies

4. UNIX for Dummies Questions & Answers

sorting s file

how would i sort a file on the third column based on numerical value instead of the ASCII order? (1 Reply)
Discussion started by: trob
1 Replies

5. Shell Programming and Scripting

Finding & Moving Oldest File by Parsing/Sorting Date Info in File Names

I'm trying to write a script that will look in an /exports folder for the oldest export file and move it to a /staging folder. "Oldest" in this case is actually determined by date information embedded in the file names themselves. Also, the script should only move a file from /exports to... (6 Replies)
Discussion started by: nikosey
6 Replies

6. Shell Programming and Scripting

Sorting file

I have the file as follow: A: 60 B: 80 C: 40 D: 11 E: 100 I want to sort the file and get the output to file as follow: E: 100 B: 80 A: 60 C: 40 D: 11 Could any one help me please? (1 Reply)
Discussion started by: moutaz1983
1 Replies

7. Shell Programming and Scripting

file sorting

i have a data in afile like this ************************************** sree sree@yahoo.com 98662323432 ************************************* phani phani@yahoo.com 98662323344 ************************************* i want to sort the file with respect to name. how can i do this. thank... (5 Replies)
Discussion started by: phani_sree
5 Replies

8. Programming

regarding file sorting

i ahve a file like: ************************************* sree 122132 12321 *********************************** phani 21321 3213214 ****************************** dddsds 213213123 23213213 ******************************* i want to sort the file with respect to name how we can do this... (1 Reply)
Discussion started by: phani_sree
1 Replies

9. Shell Programming and Scripting

sorting file

hi everyone, i have a document where i have email addresess and names, i need to check if the email addresses are uniq, if they repeat erase one of them, how can i do that? document sample: aD00763357@cucei.udg.mx,ABRAHAM ANTONIO SEVERIANO a199721111@cucei.udg.mx,ABRAHAM GONZALEZ... (4 Replies)
Discussion started by: sx3v1l_1n51de
4 Replies

10. Shell Programming and Scripting

Help sorting file.

Hi, I have this file (filex) 07-11-2003 10:11:12!cccc!ddd!eeeeeeee 07-11-2003 09:11:11!dddd!kkkkk!xxxxxx 09-12-2003 14:18:43!aaaa!bbbbb!cccc where I need to sort it by date+time in this order: 09-12-2003 14:18:43!aaaa!bbbbb!cccc 07-11-2003 10:11:12!cccc!ddd!eeeeeeee 07-11-2003... (3 Replies)
Discussion started by: gio123bg
3 Replies
Login or Register to Ask a Question