how to sort and arrange an output


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers how to sort and arrange an output
# 8  
Old 11-12-2007
Quote:
Originally Posted by llsmr777
Is there a way to make the outputs be side by side columns?
Side by side is harder as you'd have to either make temporary files or store the lists in memory, then display it back out once you are ready.

Shell doesn't lend itself very well to formatting output, you'd have to monkey about with inserting a number of tab characters based on how long the various names in the file are.

Perl would probably be the language of choice for this as it's got a very nice function for generating reports etc called 'format'. You can design a form, then populate the data and dump it out via the 'write' command. It'd be a bit more complex than the previous shell script though as it would also need to store things in memory or in files rather than streaming everything.
# 9  
Old 11-12-2007
Hi.

As Smiling Dragon says, one choice is to have the data on separate files. Once you have that, then commands like paste become very useful, as with:
Code:
#!/bin/sh -

# @(#) s2       Demonstrate paste for columns.

echo
echo " (Versions of commands from local \"version\""
version >/dev/null 2>&1 && version bash my-nl paste
FILES="e1 e2 e3"

echo
echo " Input data:"
my-nl $FILES

echo
echo " Results of paste:"
paste $FILES

exit 0

Which produces:
Code:
% ./s2

 (Versions of commands from local "version"
GNU bash 2.05b.0
my-nl (local) 294
paste (coreutils) 5.2.1

 Input data:

==> e1 <==

  1 MANOA
  2 DETOA

==> e2 <==

  1 DETOM

==> e3 <==

  1 SEAOT
  2 MANOT
  3 DETOT

 Results of paste:
MANOA   DETOM   SEAOT
DETOA           MANOT
                DETOT

See man paste for details and continue to experiment ... cheers, drl
# 10  
Old 11-12-2007
Quote:
Originally Posted by drl
Once you have that, then commands like paste become very useful
Ooh, cool utility! I've been fumbling by with perl and shell script segments when I've had to do this in the past.
Must remember that one - nice! Smilie
# 11  
Old 11-12-2007
A ksh solution:
Code:
$ cat listr
#! /usr/bin/ksh

LIST="DETOT
MANOA
DETOM
DETOA
MANOT
SEAOT"

c1=0
c2=0
c3=0
for word in $LIST ; do
        suffix=${word#${word%??}}
        case $suffix in
        OT) list1[c1]=$word
                ((c1=c1+1))
                ;;
        OA) list2[c2]=$word
                ((c2=c2+1))
                ;;
        OM) list3[c3]=$word
                ((c3=c3+1))
                ;;
        *)  echo $word does not have a standard suffix
                ;;
        esac
done
        set -A list1 -s ${list1[*]}
        set -A list2 -s ${list2[*]}
        set -A list3 -s ${list3[*]}
        set -A counts -s ${#list1[*]} ${#list2[*]} ${#list3[*]}
        max=${counts[((${#counts[*]}-1))]}
n=0
typeset -L12 item1 item2 item3
while ((n<max)) ; do
        item1=${list1[n]}
        item2=${list2[n]}
        item3=${list3[n]}
        echo "$item1 $item2 $item3"
        ((n=n+1))
done
exit 0
$
$
$ ./listr
DETOT        DETOA        DETOM
MANOT        MANOA
SEAOT
$

 
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Any way to sort ps output based on STIME?

Hi, This is one of the thing that am looking for when I post the question on the ps wrapper. It has since been closed as it has taken me too long to post an example. I have replaced some of the original content of the ps output. uname -a = SunOS <hostname> 5.11 11.3 sun4v sparc sun4v ... (1 Reply)
Discussion started by: newbie_01
1 Replies

2. Linux

Arrange output of a command

Hi, I am using a command :- ps -auxwww 2> /dev/null | awk 'match ($0, GIN:*/) {print substr($0, RSTART+3, RLENGTH-3)}' | sort | grep -v -F 'which gives output as 3 aruau 5 asun 4 cgan Now I need a command which gives me something like this :- 3 aruau 5 asun 4 cgan... (2 Replies)
Discussion started by: Raj999
2 Replies

3. Shell Programming and Scripting

Need to sort an output

with a command i get a long list (example) and the entrys are intended. DName=AAAAA DName=AAAAA lba=838,860,800 label=ftw_1 DName=BBBBB DName=BBBBB lba=838,860,800 label=ftw_2 DName=CCCCC ... (3 Replies)
Discussion started by: Serano
3 Replies

4. Shell Programming and Scripting

sort ps output in seconds

Now I van sort in hour-minute-second. I need in seconds ps -eo pid,etime,args --sort=start_time | grep bash Sample Output 15064 03:23 -bash I need in 03:23 in seconds (1 Reply)
Discussion started by: anil510
1 Replies

5. Shell Programming and Scripting

Sort and output to different files

Hi all! I have a comma delimited file and I'm sorting it based on fields 6, 8 and 10. The following does the job: sort -t, -nk6,10 unsorted.txt -o sorted.txt What I need to do now is to write every row containing same values on fields 6, 8 and 10 to a different file. Any ideas on how to do... (2 Replies)
Discussion started by: Tr0cken
2 Replies

6. Shell Programming and Scripting

Sort output is different with Corn

Hi, I am sorting a file, but getting different output with crontab. input file-file z Z x X y Y when I sort manually sort file x X y Y z Z (4 Replies)
Discussion started by: suresh3566
4 Replies

7. Shell Programming and Scripting

Arrange output based on rows into columns

Hi All, I would like to ask help on how can i achieve below output. Inputfile: Oct11,apa1-daily,01:25:01 Oct11,apa2-daily,01:45:23 Oct12,apa1-daily,02:30:11 Oct12,apa2-daily,01:55:01 Oct13,apa1-off,01:43:34 Oct13,apa2-off,01:22:04 Desired output: Clients ... (3 Replies)
Discussion started by: mars101
3 Replies

8. UNIX for Dummies Questions & Answers

Sort fdupes output by size

Hi I have a file that is a fdupes output. I'd like to sort the duplicated file by size. The format file is the following: 5996544 bytes each: /path1/to/file1.jpg /path2/to/file1.jpg /pathx/to/file1.jpg ... random number of lines /path999/to/file1.jpg 591910 bytes each:... (2 Replies)
Discussion started by: AdminLew
2 Replies

9. Shell Programming and Scripting

sort output

this one is a bit tricky: host16 /etc/passwd changed Thu Jan 3 16:39:48 host3 /etc/group changed Thu Jan 3 16:39:48 host2 /etc/services changed Thu Jan 3 16:39:48 host10 /etc/group changed Thu Jan 10 09:59:01 host11 /etc/group changed Thu Jan 3 18:55:38 host17 /etc/group changed Thu Jan... (9 Replies)
Discussion started by: funksen
9 Replies

10. UNIX for Dummies Questions & Answers

Sort - only one field appears in output?

I'm running against a file with 1008 records like this, all beginning '4760 Slave': 4760 Slave,7,3607 ,GL ,200605,11320024 , ,GBP ,X00033 ,AI80190 ... (1 Reply)
Discussion started by: miwinter
1 Replies
Login or Register to Ask a Question