Sponsored Content
Top Forums Shell Programming and Scripting Sort numbers which has colon (:) in between Post 302653733 by drl on Sunday 10th of June 2012 07:54:16 AM
Old 06-10-2012
Hi.

Here is an alternate solution. The utility msort has an interesting sort-field key called a hybrid. Essentially, it breaks apart a key-field into sub-fields. It then sorts the sub-fields as character unless the field is numeric, in which case it sorts as a numeric. The header and trailer lines in this data file have no second field, so a pair of perl scripts adds the field to request and response lines, and removes the second field after the hybrid sort. So for the perl add action, the lines would become:
Code:
[1:0] C request
[1:32000] C response

ready for input into msort.
Code:
#!/usr/bin/env bash

# @(#) s2	Demonstrate hybrid sort, msort.
# http://freecode.com/projects/msort

pe() { for _i;do printf "%s" "$_i";done; printf "\n"; }
pl() { pe;pe "-----" ;pe "$*"; }
db() { ( printf " db, ";for _i;do printf "%s" "$_i";done;printf "\n" ) >&2 ; }
db() { : ; }
C=$HOME/bin/context && [ -f $C ] && $C msort perl

FILE=${1-data1}
pl " Input data file $FILE, and expected output:"
head -n 11 $FILE expected-output.txt
pl " Helper perl scripts:"
head p*

pl " Results:"
./p1 $FILE |
tee f1 |
msort -q -l -n 1,1 -c hybrid |
tee f2 |
./p2

exit 0

producing:
Code:
% ./s2

Environment: LC_ALL = C, LANG = C
(Versions displayed with local utility "version")
OS, ker|rel, machine: Linux, 2.6.26-2-amd64, x86_64
Distribution        : Debian GNU/Linux 5.0.8 (lenny) 
bash GNU bash 3.2.39
msort 8.44
perl 5.10.0

-----
 Input data file data1, and expected output:
==> data1 <==
[1] C request
[1:1]
[1:4]
[1:2]
[1:3]
[1] C response
[2:3]
[2] C request
[2:1]
[2:2]
[2] C response

==> expected-output.txt <==
[1] C request
[1:1]
[1:2]
[1:3]
[1:4]
[1] C response
[2] C request
[2:1]
[2:2]
[2:3]
[2] C response

-----
 Helper perl scripts:
==> p1 <==
#!/usr/bin/env perl

# @(#) p1	Augment header and trailer lines with integers.

while ( <> ) {
  s/\[(\d+)\]/[\1:0]/ if /request/;
  s/\[(\d+)\]/[\1:32000]/ if /response/;
  print;
}

==> p2 <==
#!/usr/bin/env perl

# @(#) p2	Remove integers from head and trailer lines.

while ( <> ) {
  s/:\d+// if /request|response/;
  print;
}

-----
 Results:
[1] C request
[1:1]
[1:2]
[1:3]
[1:4]
[1] C response
[2] C request
[2:1]
[2:2]
[2:3]
[2] C response

Files f1 and f2 show the intermediate form of the data and can be discarded for production work.

See the link in the script for msort if it is not in an accessible repository. Fedora, Debian, FreeBSD have it, for example.

Best wishes ... cheers, drl
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to sort a string with numbers

Hi, I need help to sort a file contents. I am using sort -r option to basically reverse the comparison in descending order. However, i found out that my file is not sorted according, can anyone please help. My data is something like:- Hello world 20.982342864 343 19.234355545 222... (5 Replies)
Discussion started by: ahjiefreak
5 Replies

2. Shell Programming and Scripting

Sort by numbers, then alphabetically

Hey guys, I have a file that contains the following: 366 K 364 Q 12 UB 7 INC. P 4 Law 2 LAMB 2 High 1 QEG 1 OF 1 LC 1 B As you can see, it's already sorted by numerical order, how do I sort it again, breaking the ties by using the alphabetical order of the second column, but... (2 Replies)
Discussion started by: Andrew9191
2 Replies

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

4. Shell Programming and Scripting

Sort numbers

Hello, okey so my script is using 4 variables that are either empty or numbers in the following format: NUMBER_1 NUMBER_2 NUMBER_3 NUMBER_4 So they're basically separated by a space and I need to echo the lowest number, so far I've been doing it like this: echo "2 3 1 3" | tr " "... (6 Replies)
Discussion started by: TehOne
6 Replies

5. Shell Programming and Scripting

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

Hello Everybody :) !!!. i have question in mind, is it possible to sort a list of hexadecimal numbers using "sort" command? (9 Replies)
Discussion started by: Kesavan
9 Replies

6. Shell Programming and Scripting

How to sort version numbers?

I would like to know how to sort version numbers, using bash or perl. I would like to sort file names that are program names with version numbers and extensions, such as hello-0.2.3.tar.gz and hello-0.10.3.tar.gz. Version numbers of computer programs do not comply with the mathematical rule... (3 Replies)
Discussion started by: LessNux
3 Replies

7. Shell Programming and Scripting

how to sort numbers

I have files like this: 1 3 4 6 14 3 6 I want to extract the highest number. I have tried using cat filename | sort but then 9 would become higher than 14. So how do I sort? (1 Reply)
Discussion started by: locoroco
1 Replies

8. Shell Programming and Scripting

How to sort a column in UNIX that is colon separated ":" ?

Experts, how to sort this fields with numerical order : -How to use the sort command in this case, I was thinking with -k but it is not working, lan5000 lan5000:1 lan5000:10 lan5000:11 lan5000:12 lan5000:13 lan5000:14 lan5000:15 lan5000:16 lan5000:17 ... (6 Replies)
Discussion started by: rveri
6 Replies

9. Shell Programming and Scripting

Bash, remove numbers after colon

Hello All, I was wondering if someone might know how to do this. I have a word list that is format like the example below. I need to take away the :number after that... is there some kind of command I could use to remove them? 123456:5562 password:1507 123456789:989 qwerty:877... (7 Replies)
Discussion started by: 3therk1ll
7 Replies

10. Shell Programming and Scripting

Sort only numbers within a string

Hi, I am having contents in a file like below, cat testfile rpool/swap rpool/swap14 rpool/swap2 rpool/swap3 I want to sort the above contents like, rpool/swap rpool/swap2 rpool/swap3 rpool/swap14 I have tried in this way, (7 Replies)
Discussion started by: Sumanthsv
7 Replies
Mojo::Message::Response(3pm)				User Contributed Perl Documentation			      Mojo::Message::Response(3pm)

NAME
Mojo::Message::Response - HTTP 1.1 response container SYNOPSIS
use Mojo::Message::Response; # Parse my $res = Mojo::Message::Reponse->new; $res->parse("HTTP/1.0 200 OKx0ax0d"); $res->parse("Content-Length: 12x0ax0dx0ax0d"); $res->parse("Content-Type: text/plainx0ax0dx0ax0d"); $res->parse('Hello World!'); say $res->body; # Build my $res = Mojo::Message::Response->new; $res->code(200); $res->headers->content_type('text/plain'); $res->body('Hello World!'); say $res->to_string; DESCRIPTION
Mojo::Message::Response is a container for HTTP 1.1 responses as described in RFC 2616. EVENTS
Mojo::Message::Response inherits all events from Mojo::Message. ATTRIBUTES
Mojo::Message::Response inherits all attributes from Mojo::Message and implements the following new ones. "code" my $code = $res->code; $res = $res->code(200); HTTP response code. "message" my $message = $res->message; $res = $res->message('OK'); HTTP response message. METHODS
Mojo::Message::Response inherits all methods from Mojo::Message and implements the following new ones. "cookies" my $cookies = $res->cookies; $res = $res->cookies(Mojo::Cookie::Response->new); $res = $res->cookies({name => 'foo', value => 'bar'}); Access response cookies, usually Mojo::Cookie::Response objects. say $res->cookies->[1]->value; "default_message" my $message = $res->default_message; Generate default response message for code. "fix_headers" $res = $res->fix_headers; Make sure response has all required headers for the current HTTP version. "is_status_class" my $success = $res->is_status_class(200); Check response status class. SEE ALSO
Mojolicious, Mojolicious::Guides, <http://mojolicio.us>. perl v5.14.2 2012-09-05 Mojo::Message::Response(3pm)
All times are GMT -4. The time now is 12:25 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy