Is it Possible to sort a list of hexadecimal numbers using "sort" command?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Is it Possible to sort a list of hexadecimal numbers using "sort" command?
# 1  
Old 08-18-2011
MySQL Is it Possible to sort a list of hexadecimal numbers using "sort" command?

Hello Everybody Smilie !!!. i have question in mind, is it possible to sort a list of hexadecimal numbers using "sort" command?
# 2  
Old 08-18-2011
From the book "UNIX power tools By Shelley Powers, Jerry Peek"

There is no provision for sorting hexadecimal numbers
# 3  
Old 08-18-2011
In this way we can sort

Code:
$ cat hexanumbers.txt
3E80
3EF8
460
$ cat testfile.sh
#!/bin/ksh
for i in `cat hexanumbers.txt | awk '{ print "16#"$0}'`
do
typeset -i10 i
echo $i >> decimals_list.txt
done
for i in `cat decimals_list.txt | sort`
do
        echo "obase=16;$i" | bc
done
rm decimals_list.txt 
$ ksh testfile.sh
460
3E80
3EF8
$

This User Gave Thanks to jayan_jay For This Post:
# 4  
Old 08-19-2011
Hi.
Quote:
msort is a program for sorting files in sophisticated ways. It was originally developed for alphabetizing dictionaries of "exotic" languages in formats like those used by Shoebox and Toolbox, for which it has been extensively used, but is useful for many other purposes. msort differs from typical sort utilities in providing greater flexibility in parsing the input into records and identifying key fields and greater control over the sort order.
...

Msort stores numeric keys internally as double precision floating point numbers.
The conversion is done using the standard C library function strtod(3), which under-
stands both standard and scientific notation, decimal and hexadecimal. The special
values INFINITY and NAN are also supported. For details, see the documentation
for strtod(3). The interpretation of strings as numbers is governed by the locale
setting. Numbers containing delimiters such as commas can be sorted numerically
by using msort's exclusion facilities to remove the delimiters.

from the extensive pdf describing msort
The utility msort might be found in your repository, or, failing that, at MSORT

Best wishes ... cheers, drl
# 5  
Old 08-19-2011
based on jayan_jay's, here's a bash script :
Code:
$ cat hexanumbers.txt
3E80
3EF8
460
$ while read hexnum; do array[16#$hexnum]="$hexnum"; done < hexanumbers.txt 
$ printf '%s\n' "${array[@]}"
460
3E80
3EF8

# 6  
Old 08-19-2011
Code:
awk '{printf("%050s\t%s\n", toupper($0), $0)}' hex-data | LC_COLLATE=C sort -k1,1 | cut -f2

If you take a look at the C/POSIX collation sequence, you'll see that the sequences A-F and a-f both sort after 0-9 in the POSIX/C locale. So long as the hex numbers do not mix case and are of the same length, the string collation sequence is congruent to a hex digits sequence.

LC_COLLATE Category in the POSIX Locale

If you have a list of hex numbers, you can decorate them with a column of zero-padded, case-folded numbers, sort on that column, then output the original numbers.

Code:
$ cat hex-data
3e80
3EF8
460
$ awk '{printf("%050s\t%s\n", toupper($0), $0)}' hex-data | LC_COLLATE=C sort -k1,1 | cut -f2
460
3e80
3EF8

Regards,
Alister
# 7  
Old 08-19-2011
IMO, if the OP really have such numbers he should just normalize them. And there is no need to undecorate them back.
Code:
cat NUMS |  xargs printf "%4s\n" | tr 'a-z ' 'A-Z0' | sort

(It is "useful use" of cat).
Or with awk if there are several numbers on lines:
Code:
awk '{
  for ( i = 1; i <= NF; i++ ) {
    s = sprintf("%04s", $i)
    gsub(" ", "0", s)
    printf s " "
  }
  print ""
}' NUMS | tr a-z A-Z | sort

Use 2 or 8 for bytes and 32-bit words.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Gawk: PROCINFO["sorted_in"] does not sort my numerical array values

Hi, PROCINFO seems to be a great function but I don't manage to make it works. input: B,A,C B B,B As an example, just want to count the occurence of each letter across the input and sort them by decreased order. Wanted output: B 4 A 1 C 1 When I use this command, the PROCINFO... (4 Replies)
Discussion started by: beca123456
4 Replies

2. UNIX for Beginners Questions & Answers

Extract delta records using with "comm" and "sort" commands combination

Hi All, I have 2 pipe delimited files viz., file_old and file_new. I'm trying to compare these 2 files, and extract all the different rows between them into a new_file. comm -3 < sort file_old < sort file_new > new_file I am getting the below error: -ksh: sort: cannot open But if I do... (7 Replies)
Discussion started by: njny
7 Replies

3. UNIX for Dummies Questions & Answers

Sorting files ending in numbers with "sort"

I have a group of files that I need to be sorted by number. I have tried to use the sort command without any luck. ls includes* includes1 includes10 includes11 includes12 includes2 includes3 includes4 includes5 includes6 includes7 includes8 includes9 I have tried ls includes*... (6 Replies)
Discussion started by: newbie2010
6 Replies

4. UNIX for Dummies Questions & Answers

New to Unix command line and have a question about the "sort" command

I am going through the Unix Made Easy second edition book by John Muster. So far it's been very informative and I can tell it may be a bit out of date. In one of the exercises it talks about the "sort" command and using it to sort column's of data etc. The "sort" command has changed a bit and... (1 Reply)
Discussion started by: budfoxcat
1 Replies

5. Shell Programming and Scripting

sort, columns, no result! can I print files of "planes"?

hi, please can I ask you for some help? I have data from 3D situation, x y z value I'd like to use gnuplot to generate maps of the value in the planes z=0 to z=1 for example, my file looks like -0,012 0,0060 0,0 0,13972813076023477 -0,012 0,0064319163 4,2894483E-4 ... (1 Reply)
Discussion started by: kocour
1 Replies

6. Shell Programming and Scripting

Meaning of "b" modifier in "sort" command

I need to sort the following file by the rhdiskpower devices in the last column: Total_MB Free_MB OS_MB Name Failgroup Library Label UDID Product Redund Path 1024 851 1024 OCRVOT1_0000 OCRVOT1_0000 System UNKNOWN ... (3 Replies)
Discussion started by: wjssj
3 Replies

7. Shell Programming and Scripting

How to Sort Floating Numbers Using the Sort Command?

Hi to all. I'm trying to sort this with the Unix command sort. user1:12345678:3.5:2.5:8:1:2:3 user2:12345679:4.5:3.5:8:1:3:2 user3:12345687:5.5:2.5:6:1:3:2 user4:12345670:5.5:2.5:5:3:2:1 user5:12345671:2.5:5.5:7:2:3:1 I need to get this: user3:12345687:5.5:2.5:6:1:3:2... (7 Replies)
Discussion started by: daniel.gbaena
7 Replies

8. Solaris

"mail" command sort by date

Hello experts, I am using SunFire T200. When I start reading the mail with "mail" command it comes older mail first. From MAILER-DAEMON Sat Mar 28 06:02:48 2009 Return-Path: <MAILER-DAEMON@emarn1> Received: from localhost (localhost) .... .... I want to see the most recent mail... (1 Reply)
Discussion started by: thepurple
1 Replies

9. UNIX for Dummies Questions & Answers

Problems with "sort" command

It seems our administrators had installed the version of the "sort" command not having the -M option. Does anyone have the source code for this routine? I need to be able to sort on month comparison: e.g. "sudo at -l | sort -k3M,5" (1 Reply)
Discussion started by: superdelic
1 Replies

10. UNIX for Dummies Questions & Answers

i don't understand the "sort" command

i have been trying to understand this chapter titled "Searching for Files and Text" for a few weeks now. unfortunately, this chapter is one of those things, that no matter how hard you try and how long you try for, you are incapable of understanding (at least in my case) this entire chapter,... (2 Replies)
Discussion started by: xyyz
2 Replies
Login or Register to Ask a Question