Visit Our UNIX and Linux User Community

Full Discussion: sorting
Top Forums Shell Programming and Scripting sorting Post 302445714 by durden_tyler on Monday 16th of August 2010 05:15:28 PM
Old 08-16-2010
Quote:
Originally Posted by phoeberunner
Can you do in with awk script? ...
No I cannot, sorry.
I've yet to find a language that gives me as much power despite the terseness as Perl. If I understand correcly, awk does not have an inbuilt array sort routine, but I may be mistaken.

The only other non-Perl and non-Ruby method I could think of leverages the shell's multiple-key sort command, the algorithm for which would be something like -

(1) Read a line and form the start-end pairs separated by a delimiter.
(2) Redirect the pairs, one per line, to a temporary file.
(3) Sort the temporary file on the multiple numeric keys.
(4) Read them back and print to stdout.
(5) Repeat (1) through (4) till eof.

tyler_durden

---------- Post updated at 05:15 PM ---------- Previous update was at 04:16 PM ----------

Well ok, here's an implementation of algorithm posted earlier, in a Bash shell script -

Code:
$
$
$ cat f4
No Start End
A 22,222,33,22,1233,3232,44 555,333,222,55,1235,3235,66
B 33,333,22,44 66,340,44,55
C 66,55,555 75,58,560
$
$
$ cat f4.sh
#!/usr/bin/bash
LNUM=1
while read NO START END; do
  if [ "$LNUM" -eq "1" ]; then
    echo "$NO $START $END"
  else
    echo $START | tr -s "," "\n" >f1.tmp
    echo $END | tr -s "," "\n" >f2.tmp
    paste -d~ f1.tmp f2.tmp | sort -t~ -nk1,1 -nk2,2 >f3.tmp
    IFS="~"
    INDX=1
    while read NUM1 NUM2; do
      if [ "$INDX" -eq "1" ]; then
        LIST1=$NUM1
        LIST2=$NUM2
      else
        LIST1="$LIST1,$NUM1"
        LIST2="$LIST2,$NUM2"
      fi
      INDX=`expr $INDX + 1`
    done <f3.tmp
    echo "$NO $LIST1 $LIST2"
    unset IFS
  fi
  LNUM=`expr $LNUM + 1`
done <f4
rm f1.tmp f2.tmp f3.tmp
$
$
$
$ . f4.sh
No Start End
A 22,22,33,44,222,1233,3232 55,555,222,66,333,1235,3235
B 22,33,44,333 44,66,55,340
C 55,66,555 58,75,560
$
$
$

I believe it's not good enough if the data is huge. Use of arrays instead of temp files should make it faster. It's definitely slower than the Perl script.

tyler_durden
 
Test Your Knowledge in Computers #943
Difficulty: Medium
The Smurf attack is a DDOS attack in which large numbers of Internet Control Message Protocol (ICMP) packets with the intended victim's spoofed source IP are broadcast to a computer network using an IP broadcast address.
True or False?

10 More Discussions You Might Find Interesting

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

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

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

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

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

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

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

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

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

10. Shell Programming and Scripting

sorting

Hii guys, I need to sort my file and remove duplicates before writing to another file. The first line in the file are column names. I dont want this line to be sorted and should always be the first line in the output. sort -u file.txt > file1.txt. is the command that i am using... (4 Replies)
Discussion started by: just4u_sharath
4 Replies
IGAWK(1)							 Utility Commands							  IGAWK(1)

NAME
igawk - gawk with include files SYNOPSIS
igawk [ all gawk options ] -f program-file [ -- ] file ... igawk [ all gawk options ] [ -- ] program-text file ... DESCRIPTION
Igawk is a simple shell script that adds the ability to have ``include files'' to gawk(1). AWK programs for igawk are the same as for gawk, except that, in addition, you may have lines like @include getopt.awk in your program to include the file getopt.awk from either the current directory or one of the other directories in the search path. OPTIONS
See gawk(1) for a full description of the AWK language and the options that gawk supports. EXAMPLES
cat << EOF > test.awk @include getopt.awk BEGIN { while (getopt(ARGC, ARGV, "am:q") != -1) ... } EOF igawk -f test.awk SEE ALSO
gawk(1) Effective AWK Programming, Edition 1.0, published by the Free Software Foundation, 1995. AUTHOR
Arnold Robbins (arnold@skeeve.com). Free Software Foundation Nov 3 1999 IGAWK(1)

Featured Tech Videos

All times are GMT -4. The time now is 11:25 AM.
Unix & Linux Forums Content Copyright 1993-2020. All Rights Reserved.
Privacy Policy