Sorting based on the second field


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Sorting based on the second field
# 1  
Old 03-15-2013
Sorting based on the second field

Oracle Enterprise Linux 6

This is my file. Two fields separated by space
Code:
$ cat testfile.txt
MARCH9 MARCH4
MARCH1 MARCH5
MARCH2 MARCH326
MARCH821 MARCH7
MARCH6 MARCH2
$
$

The following numeric sort, based on the first field's 6th character works as expected.
Code:
$
$ sort -n -k  1.6 testfile.txt
MARCH1 MARCH5
MARCH2 MARCH326
MARCH6 MARCH2
MARCH9 MARCH4
MARCH821 MARCH7
$

But the following attempt to sort the lines based on the second field's numeric character doesn't seem to work.
--- In the below example for "-k 2.6" , 2 denotes second field, 6 denotes the character based on which sort should happen (I have a numeric sort here)
Code:
$
$ sort -n -k  2.6 testfile.txt
MARCH1 MARCH5
MARCH2 MARCH326
MARCH6 MARCH2
MARCH821 MARCH7
MARCH9 MARCH4

# 2  
Old 03-15-2013
Code:
# sort -k2 testfile

Code:
MARCH6 MARCH2
MARCH2 MARCH326
MARCH9 MARCH4
MARCH1 MARCH5
MARCH821 MARCH7


cheers,
Devaraj Takhellambam
# 3  
Old 03-15-2013
Mention the delimiter
Code:
$ sort -t" " -n -k  2.6 file
MARCH6 MARCH2
MARCH9 MARCH4
MARCH1 MARCH5
MARCH821 MARCH7
MARCH2 MARCH326

This User Gave Thanks to anbu23 For This Post:
# 4  
Old 03-15-2013
Try
Code:
$ sort -n -k2.7 file

Reason:

man sort:
Quote:
POS is F[.C][OPTS], where F is the field number and C the character position in the field; both are origin 1. If neither -t nor -b
is in effect, characters in a field are counted from the beginning of the preceding whitespace.
This User Gave Thanks to RudiC For This Post:
# 5  
Old 03-15-2013
Thanks Anbu. You solution worked.
Thank you Rudic . You solution worked as well.
Code:
 
$ sort -n -k 2.7 myfile.txt
MARCH6 MARCH2
MARCH9 MARCH4
MARCH1 MARCH5
MARCH821 MARCH7
MARCH2 MARCH326

But what is 7 ? It should be sorting from 6th character onwards. Right ?
# 6  
Old 03-15-2013
Did you read the quote from sort's man page?
This User Gave Thanks to RudiC For This Post:
# 7  
Old 03-15-2013
Got it. Its because of this . Right ?
Code:
 
If neither -t nor -b is in effect, characters in a field are counted from the beginning of the preceding whitespace

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Problem with getting awk to multiply a field by a value set based on condition of another field

Hi, So awk is driving me crazy on this one. I have searched everywhere and read man, docs and every related post Google can find and still no luck. The actual files I need to run this on are sensitive in nature, but it is the same thing as if I needed to calculate weighted grades for multiple... (15 Replies)
Discussion started by: cotilloe
15 Replies

2. Shell Programming and Scripting

awk to adjust coordinates in field based on sequential numbers in another field

I am trying to output a tab-delimited result that uses the data from a tab-delimited file to combine and subtract specific lines. If $4 matches in each line then the first matching sequential $6 value is added to $2, unless the value is 1, then the original $2 is used (like in the case of line... (3 Replies)
Discussion started by: cmccabe
3 Replies

3. Shell Programming and Scripting

awk to update value in field based on another field

In the tab-delimeted input file below I am trying to use awk to update the value in $2 if TYPE=ins in bold, by adding the value of HRUN= in italics. In the below since in line 1 TYPE=ins the 117282541 value in $2 has 6 added because that is the value of HRUN=. Hopefully the awk is a start but I... (2 Replies)
Discussion started by: cmccabe
2 Replies

4. Shell Programming and Scripting

sorting based on a field

the below is sorted as it is. the fields that i'm interested in are the 4th and 5th field. i want to sort the based on the 4th field. my past attempt to do this was to do something like this: awk '{print $4}'| awk '{print $1":"$2}' datafile | sort | uniq however, if i do that, i lose... (2 Replies)
Discussion started by: SkySmart
2 Replies

5. 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

6. Shell Programming and Scripting

Sorting on two fields time field and number field

Hi, I have a file that has data in it that says 00:01:48.233 1212 00:01:56.233 345 00:09:01.221 5678 00:12:23.321 93444 The file has more line than this but i just wanted to put in a snippet to ask how I would get the highest number with time stamp into another file. So from the above... (2 Replies)
Discussion started by: pat4519
2 Replies

7. Shell Programming and Scripting

Sorting file by a field, and then by another field.

Hi all, Sorry the title is a mess, but did not find a better description at the time. So here is my problem: I have an input file: 8:Mass40s -- 0 48:Mass40s -- 0 67:Mass40s -- 0 86:Mass40s -- 0 105:Mass40s -- 0 9:Mass -- 1 49:Mass -- 86... (5 Replies)
Discussion started by: Alexis Duarte
5 Replies

8. UNIX for Dummies Questions & Answers

awk - Summing a field based on another field

So, I need to do some summing. I have an Apache log file with the following as a typical line: 127.0.0.1 - frank "GET /apache_pb.gif HTTP/1.0" 200 2326 Now, what I'd like to do is a per-minute sum. So, I can have awk tell me the individual minutes, preserving the dates(since this is a... (7 Replies)
Discussion started by: treesloth
7 Replies

9. Shell Programming and Scripting

Find top N values for field X based on field Y's value

I want to find the top N entries for a certain field based on the values of another field. For example if N=3, we want the 3 best values for each entry: Entry1 ||| 100 Entry1 ||| 95 Entry1 ||| 30 Entry1 ||| 80 Entry1 ||| 50 Entry2 ||| 40 Entry2 ||| 20 Entry2 ||| 10 Entry2 ||| 50... (1 Reply)
Discussion started by: FrancoisCN
1 Replies

10. Shell Programming and Scripting

Sorting on last field

Hello I am trying to sort on the last field and it seems to have lost ideas on what to do. the file am sorting looks like this Tan\da\1223 hey\1234 two\three\think\4579 i want to sort on the last fields (1223, 1234 and 4579). thank you (2 Replies)
Discussion started by: ganiel24
2 Replies
Login or Register to Ask a Question