Sort based on certain value in a column


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Sort based on certain value in a column
# 1  
Old 05-02-2014
Sort based on certain value in a column

Hi,

i need to sort content of files based on a specific value. An example as below.

Input1.txt
Code:
Col_1
SW_MH2_ST
ST_F72_9S
SW_MH3_S6
Col_2
SW_MH3_AS7
ST_S15_9CH
SW_MH3_AS8
SW_MH3_ST
Col_3
ST_M93_SZ
ST_C16_TC


the output that i want is to sort based on "Col_X" (X is the number) as bold.

output.txt
Code:
Col_1
ST_F72_9S
SW_MH2_ST
SW_MH3_S6
Col_2
ST_S15_9CH
SW_MH3_AS7
SW_MH3_AS8
SW_MH3_ST
Col_3
ST_C16_TC
ST_M93_SZ

Tried different kind of sort command but the results is not what i expected. I have many files that i need to sort and they contains different number of "Col_X" (eg: Col_20). Could u guys pls help me on this. Thanks

Last edited by redse171; 05-02-2014 at 05:29 PM.. Reason: to add filename
# 2  
Old 05-02-2014
Could you please post example input and expected output? The way the question is worded right now it is hard to see what you mean.
# 3  
Old 05-02-2014
Hi jim mcnamara,

I just edited the filename in my question above as it seems confusing. Ok, the sample input is "input1.txt" and the sample output is "output.txt". Thanks
# 4  
Old 05-02-2014
try:
Code:
awk '
/^Col/ {col[++c]=$0; next;}
{data[c,NR]=$0;}
END {
   for (i=1; i<=c ; i++) {
      print col[i];
      for (j=1; j<=NR; j++) if (data[i,j]) ar[data[i,j]]=data[i,j];
      n=asort(ar);
      for (l=1; l<=n; l++) print ar[l];
      delete ar;
   }
} ' Input.txt

# 5  
Old 05-02-2014
Hi rdrtx1,

i tried but got this error: "function asort never defined". It seems that i could not use "asort".
# 6  
Old 05-02-2014
try:
Code:
awk '
/^Col/ {col[++c]=$0; next;}
{data[c,NR]=$0;}
END {
   for (i=1; i<=c ; i++) {
      print col[i];
      for (j=1; j<=NR; j++) if (data[i,j]) ar=ar "\n" data[i,j];
      sub("^\n","", ar);
      sort="sort";
      print ar | sort;
      close(sort);
      ar="";
   }
} ' Input.txt

# 7  
Old 05-02-2014
Hi rdrtx1,

It works perfectly! Thanks a ton. If u dont mind, can u pls explain the codes? 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

Sort based on one column

Hi All , I am having an input file like this Input file 7 sks/jsjssj/ddjd/hjdjd/hdhd/Q 10 0.5 13 dkdkd/djdjd/djdjd/djd/QB 01 0.5 ldld/dkd/jdf/fjfjf/fjf/Q 0.5 10 sjs/jsdd/djdkd/dhd/Q 01 0.5 21 kdkd/djdd/djdd/jdd/djd/QB 01 0.5 dkdld/djdjd/djd/Q 01 0.5 ... (9 Replies)
Discussion started by: kshitij
9 Replies

2. Shell Programming and Scripting

Use sort to sort numerical column

How to sort the following output based on lowest to highest BE? The following sort does not work. $ sort -t. -k1,1n -k2,2n bfd.txt BE31.116 0s 0s DOWN DAMP BE31.116 0s 0s DOWN DAMP BE31.117 0s 0s ... (7 Replies)
Discussion started by: sand1234
7 Replies

3. UNIX for Beginners Questions & Answers

How to align/sort the column pairs of an csv file, based on keyword word specified in another file?

I have a csv file as shown below, xop_thy 80 avr_njk 50 str_nyu 60 avr_irt 70 str_nhj 60 avr_ngt 50 str_tgt 80 xop_nmg 50 xop_nth 40 cyv_gty 40 cop_thl 40 vir_tyk 80 vir_plo 20 vir_thk 40 ijk_yuc 70 cop_thy 70 ijk_yuc 80 irt_hgt 80 I need to align/sort the csv file based... (7 Replies)
Discussion started by: dineshkumarsrk
7 Replies

4. Shell Programming and Scripting

Sum column values based in common identifier in 1st column.

Hi, I have a table to be imported for R as matrix or data.frame but I first need to edit it because I've got several lines with the same identifier (1st column), so I want to sum the each column (2nd -nth) of each identifier (1st column) The input is for example, after sorted: K00001 1 1 4 3... (8 Replies)
Discussion started by: sargotrons
8 Replies

5. Shell Programming and Scripting

Sort based on column 1, not working with awk

Hi Guru, I need some help regarding awking the output so it only show the first line (based on column) of each row. So If column has 1, three row, then it only show the first line of that row, based on similar character in column 1. So i am trying to achieve a sort, based on column one and... (3 Replies)
Discussion started by: Junes
3 Replies

6. UNIX for Dummies Questions & Answers

Sort command in one column and not effect to another column

If my data is numerical : 1 = 101 2 = 102 3 = 104 4 = 104 7 = 103 8 = 103 9 = 105 I need the result like below: 1 = 101 2 = 102 3 = 103 4 = 103 7 = 104 8 = 104 9 = 105 (4 Replies)
Discussion started by: GeodusT
4 Replies

7. UNIX for Dummies Questions & Answers

How to sort a column based on numerical ascending order if it includes e-10?

I have a column of numbers in the following format: 1.722e-05 2.018e-05 2.548e-05 2.747e-05 7.897e-05 4.016e-05 4.613e-05 4.613e-05 5.151e-05 5.151e-05 5.151e-05 6.1e-05 6.254e-05 7.04e-05 7.12e-05 7.12e-05 (6 Replies)
Discussion started by: evelibertine
6 Replies

8. Shell Programming and Scripting

Sort file based on column

Hi, My input file is $cat samp 1 siva 1 raja 2 siva 1 siva 2 raja 4 venkat i want sort this name wise...alos need to remove duplicate lines. i am using cat samp|awk '{print $2,$1}'|sort -u it showing raja 1 (3 Replies)
Discussion started by: rsivasan
3 Replies

9. Shell Programming and Scripting

sort on second column only based on first column

I have an input file like this... AAAlkalines Energizer AAAlkalines Energizer AAAlkalines Energizer AAAlkalines Sunlight AAAlkalines Sunlight AAAlkalines Sunlight AAAlkalines Energizer AAAlkalines Energizer AAAlkalines Energizer AAASalines ... (7 Replies)
Discussion started by: malcomex999
7 Replies

10. Shell Programming and Scripting

Question about sort specific column and print other column at the same time !

Hi, This is my input file: ali 5 usa abc abu 4 uk bca alan 6 brazil bac pinky 10 utah sdc My desired output: pinky 10 utah sdc alan 6 brazil bac ali 5 usa abc abu 4 uk bca Based on the column two, I want to do the descending order and print out other related column at the... (3 Replies)
Discussion started by: patrick87
3 Replies
Login or Register to Ask a Question