Visit Our UNIX and Linux User Community


Help on Sorting


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Help on Sorting
# 1  
Old 04-25-2019
Help on Sorting

Hello Everyone, I need help here . I need to sort a file for one of my requirement , The file has to be sorted using a key with 4 columns. Sorting is working fine on those 4 columns but when the key is matching for many rows the other columns are also getting sorted which is not required .

Giving an example here : File = Input.txt
Code:
1 101 100 
1 001 200
1 002 100

Here I am using below command to sort.
Code:
Sort -k1,1 -k3  Input.txt

This gives me below output:
Code:
1 002  100
1 101 100
1 001 200

I don't want to sort the second column here . I have tried with -s option for stable sort but the same is not supported .

Please help.

Last edited by Scrutinizer; 04-26-2019 at 04:13 AM.. Reason: Redacted
# 2  
Old 04-25-2019
Hi, try
Code:
sort -Vr

and use option --debug for testing

--- Post updated at 19:22 ---

Code:
sort -k1,3.4 --debug

# 3  
Old 04-25-2019
I dealt with something like this before. I had to add an extra column, which held the line number, like:

Code:
1 101 100 1
1 001 200 2
1 002 100 3

...so that I could give that column number to sort, forcing groups of lines back into file order after other sorting conditions were satisfied.

Code:
$ awk '{ $(NF+1)=NR } 1' < inputfile | sort -k1,1 -k 3 -k 4

1 101 100 1
1 002 100 3
1 001 200 2

$ awk '{ $(NF+1)=NR } 1' < data | sort -k1,1 -k 3 -k 4 | cut -d ' ' -f 1,2,3

1 101 100
1 002 100
1 001 200

$


Last edited by Corona688; 04-25-2019 at 02:45 PM..
These 3 Users Gave Thanks to Corona688 For This Post:
# 4  
Old 04-25-2019
The result you get is exactly as specified - sorted by field 1 (all lines identical), then field 3. I don't see column 2 sorted - it's just random, as its results are unspecified. To keep the original file order once all keys are consumed, try Corona688's approach, or, quite similar:
Code:
cat -n file3 | sort -b -k2,2 -k4n -k1,1 | cut -f2-
1 101 100 
1 002 100
1 001 200

The problem with your sample file is a trailing space in line one that influences the key 4 - use -n to overcome.
These 3 Users Gave Thanks to RudiC For This Post:
# 5  
Old 04-25-2019
Everyone at the UNIX and Linux Forums gives their best effort to reply to all questions in a timely manner. For this reason, posting questions with subjects like "Urgent!" or "Emergency" and demanding a fast reply are not permitted in the regular forums.

For members who want a higher visibility to their questions, we suggest you post in the Emergency UNIX and Linux Support Forum. This forum is given a higher priority than our regular forums.

Posting a new question in the Emergency UNIX and Linux Support Forum requires forum Bits. We monitor this forum to help people with emergencies, but we do not not guarantee response time or best answers. However, we will treat your post with a higher priority and give our best efforts to help you.

If you have posted a question in the regular forum with a subject "Urgent" "Emergency" or similar idea, we will, more-than-likely, close your thread and post this reply, redirecting you to the proper forum.

Of course, you can always post a descriptive subject text, remove words like "Urgent" etc. (from your subject and post) and post in the regular forums at any time.


Thank you.

The UNIX and Linux Forums
# 6  
Old 04-25-2019
I think the order of not-sorted columns is not defined. The usual algorithms seem to sort them to the lowest degree.
GNU sort has the --stable option:
Code:
sort --stable -k1,1 -k3,3 input.txt

# 7  
Old 04-26-2019
Tried this .. Getting error that option is not supported

--- Post updated at 04:32 AM ---

I have 12 input files for this requirement .. Do I need to add the number in each file .. even if I do the key will match for multiple rows.

Previous Thread | Next Thread
Test Your Knowledge in Computers #126
Difficulty: Easy
Linux distro is an OS created from a collection of software built upon the Linux kernel.
True or False?

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sorting help

Hi, Please i need help in writing an 'awk' script in sorting the following data; traceroute6 to 2001:1ba0:2a0:5965:0:30:24:1 (2001:1ba0:2a0:5965:0:30:24:1) from 2001:418:1::62, 64 hops max, 16 byte packets 1 2001:418:1::4 0.342 ms 2 2001:418:1::1 0.630 ms 3 2001:504:16::1b1b 0.393 ms 4... (6 Replies)
Discussion started by: sam127
6 Replies

2. Shell Programming and Scripting

sorting

Hi all, Does anyone can help me the following question? I would like to write an AWK script. In the following input file, each number in "start" is paired with numbers in column "end". No Start End A 22,222,33,22,1233,3232,44 555,333,222,55,1235,3235,66... (7 Replies)
Discussion started by: phoeberunner
7 Replies

3. Shell Programming and Scripting

Sorting HELP

Hi, I have posted related topic but as i continue the research I find more need to sort the data. AS(2607:f278:4101:11:dead:beef:f00f:f), AS786 AS6453 AS7575 AS7922 AS(2607:f2e0:f:1db::16), AS786 AS3257 AS36252 AS786 AS3257 AS36252 AS(2607:f2f8:1700::2), AS786 AS6939 AS25795 ... (6 Replies)
Discussion started by: sam127
6 Replies

4. UNIX for Advanced & Expert Users

HELP on sorting

hi everyone, I am kind of new to this forum. I need help in sorting this data out accordingly, I am actually doing a traceroute application and wants my AS path displayed in front of my address like this; 192.168.1.1 AS28513 AS65534 AS5089 AS5089 .... till the last AS number and if possible... (1 Reply)
Discussion started by: sam127
1 Replies

5. UNIX for Dummies Questions & Answers

HELP on sorting

hi everyone, I am kind of new to this forum. I need help in sorting this data out accordingly, I am actually doing a traceroute application and wants my AS path displayed in front of my address like this; 192.168.1.1 AS28513 AS65534 AS5089 AS5089 .... till the last AS number and if possible... (1 Reply)
Discussion started by: sam127
1 Replies

6. Shell Programming and Scripting

Sorting

Let's say that I have a database that I call part ID. This database has the following grouping: Dart1=4 Dart2=8 Dart3=12 Fork1=68 Fork2=72 Fork3=64 Bike1=28 Bike2=24 Bike3=20 Car1=44 Car2=40 Car3=36 I want to write a program that would read this database and tell me when the... (19 Replies)
Discussion started by: Ernst
19 Replies

7. Homework & Coursework Questions

Sorting help

i have list of files: Wang De Wong CVPR 09.pdf Yaacob AFGR 99 Second edition.pdf Shimon CVPR 01.pdf Den CCC 97 long one.pdf Ronald De Bour CSPP 04.pdf ..... how can i sort this directory so the output will be in the next format: <year>\t<conference/journal>\t<author list> - t is tab (its... (1 Reply)
Discussion started by: nirnir26
1 Replies

8. UNIX for Dummies Questions & Answers

Sorting help

i have list of files: Wang De Wong CVPR 09.pdf Yaacob AFGR 99 Second edition.pdf Shimon CVPR 01.pdf Den CCC 97 long one.pdf Ronald De Bour CSPP 04.pdf ..... how can i sort this directory so the output will be in the next format: <year>\t<conference/journal>\t<author list> - t is tab (its... (1 Reply)
Discussion started by: nirnir26
1 Replies

9. UNIX for Dummies Questions & Answers

Sorting help

how can i sort the next list just by look at the numbers (ignore letters) example: abc123 dff4f aaa2aa bbbb55555bb output: aaa2aa dff4f abc123 bbbb55555bb (1 Reply)
Discussion started by: nirnir26
1 Replies

10. Shell Programming and Scripting

Need immediate help with sorting!!!

hey, I have a file that looks smthng like this: /*--- abcd_0050 ---*/ asdfjk adsfkja lkjljgafsd /*---abcd_0005 ---*/ lkjkljbfkgj ldfksjgf dfkgfjb /*-- abcd_0055--*/ klhfdghd dflkjgd jfdg I would like it to be sorted so that it looks like this: /*---abcd_0005 ---*/ lkjkljbfkgj (9 Replies)
Discussion started by: sasuke_uchiha
9 Replies

Featured Tech Videos