Sort command which ignores NULL


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Sort command which ignores NULL
# 8  
Old 11-25-2009
Quote:
Note:
I have tried below command which worls fine for me, but would like to achive this using SORT command alone [without help of any awk command]
You can do it without the sort command Smilie

Code:
awk -F\| '$1&&$2&&!_[$1]++' infile

If you want the records where $1 AND $2 are both 0:

Code:
awk -F\| '$1x&&$2x&&!_[$1]++' infile

---------- Post updated at 10:47 PM ---------- Previous update was at 10:05 PM ----------

Ok,
yes, as Scrutinizer correctly pointed out in a private conversation
the code I posted just doesn't sort ...

So the pipelines above are more appropriate.

Just for completeness with Perl:

Code:
perl -F'\|' -ane'
    $x{ $F[0] } = $_ unless ( /^(\||[^|]+\|\|)/ || $_{ $F[0] }++ );
    print map $x{$_}, sort { $a <=> $b } keys %x if eof
  ' infile

Or with GNU AWK:

Code:
WHINY_USERS=ahh.. awk -F\| '
  END { for (T in t) print t[T] }
  $1x && $2x && !_[$1]++ { 
    t[sprintf("%10d",$1)] = $0 
    }' infile


Last edited by radoulov; 11-25-2009 at 05:53 PM..
# 9  
Old 11-25-2009
Sorry, I didn't make myself clear. It's the lengths of the second field that matter. This is what I have:
Code:
$ printf "%s\n" 123\|{a,aa}\|{a..c} |sort -n
123|a|a
123|aa|a
123|aa|b
123|aa|c
123|a|b
123|a|c

$ printf "%s\n" 123\|{a,aa}\|{a..c} |sort -t\| -k1,1n -k2,2
123|a|a
123|a|b
123|a|c
123|aa|a
123|aa|b
123|aa|c

Edited: The above strange result was run under LC_ALL=en_US.UTF-8. With C, we have:
Code:
printf "%s\n" 123\|{a,aa}\|{a..c} |LC_ALL=C sort -n
123|aa|a
123|aa|b
123|aa|c
123|a|a
123|a|b
123|a|c


Quote:
Originally Posted by Scrutinizer
I beg to differ, that is not how it works.


Code:
$> cat sample.txt
1000000000000||kjhkjhkjhkjhk
200|TR|jvsjfhskfhskfhsdh
3000000000|BH|kjlkjljlkj
600||dadsadasdada
||ffsdfsf
10000000|YU|popopop
90||mlml

Code:
$> sort -nu sample.txt|egrep -v '^\||\|\|'
200|TR|jvsjfhskfhskfhsdh
10000000|YU|popopop
3000000000|BH|kjlkjljlkj


Last edited by binlib; 11-25-2009 at 07:03 PM.. Reason: More clarification
# 10  
Old 11-25-2009
OK now I get what you are driving at. But IMO, the OP did not specify in his first post that there should be a sort on the second field too, plus in his last example he used only sort -u and said it was working fine. That is why I used sort -nu.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to handle NULL value output from ISQL command?

I am using ISQL command in ksh script. Suppose if i get NULL value from the query which i run,how can i handle it? I am getting a NULL result set and the following error is coming. ############### output of isql command for getting the sum of JEs ################ ----------- NULL... (4 Replies)
Discussion started by: Sharma331
4 Replies

2. Shell Programming and Scripting

Invalid null command error

Hi, I have this script which gives me output as Invalid null command set recent_file=`grep '^-.*xlsx$' $FTP_LOG |\ sed -e 's/Jan/1/g' \ -e 's/Feb/2/g' \ -e 's/Mar/3/g' \ -e... (6 Replies)
Discussion started by: juzz4fun
6 Replies

3. Shell Programming and Scripting

How to use sort with null values?

Hello everyone I am doing a join command. Obviously, before I need two files sorted first. ( Both files have headers and have about 2 million lines each one ) The problem is, one of the files has null values in the key to sort (which is the first filed ). For example I have the original... (4 Replies)
Discussion started by: viktor1985
4 Replies

4. UNIX for Advanced & Expert Users

echo 2>/dev/null with a find command help

Why does this not work? echo 'find / -iname \'*katt*\' -size +500M 2>/dev/null' How does this work? I have 5 single quotes. I though you needed an even amount of single quotes. echo 'find / -iname \'*katt*\' -size +500M 2>/dev/null'' What is the trick to make it work with an alias? This... (4 Replies)
Discussion started by: cokedude
4 Replies

5. Red Hat

hostname command prints nothing a null value

Hi , On my box everything works fine. But whenever I run command It returns nothing as you see @(none) too. Its very strange issue I have never noticed on any other system yet. Any one have any idea about this. Thank you (2 Replies)
Discussion started by: pratapsingh
2 Replies

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

7. Shell Programming and Scripting

Newbie question: if[command not null]

hi, i have to put in my script a command that should tell me if the contents of two different paths are the same. I thought to write an "if" command who makes the diff of two files which contains the `ls` of the folders and go on with the script if is not null, but i'm afraid of the fact... (13 Replies)
Discussion started by: zangarules
13 Replies

8. Shell Programming and Scripting

invalid null command

#! /bin/csh set pattern = "" set deli = | foreach i ( `cat pattern`) set pattern = "$pattern$deli$i" end all i want to accomplish is create a string a|b|c, but instead I got an invalid null command error, thanks for your help (1 Reply)
Discussion started by: jdsignature88
1 Replies

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

10. UNIX and Linux Applications

procmailrc ignores INCLUDERC?

I have been using a procmail recipe for some time. I successfully include numerous INCLUDERC files. However, since each of these include files have become rather large over time, I started to try to organize better. So where procmailrc once just had: INCLUDERC=$PMDIR/original-filters.rc ... (0 Replies)
Discussion started by: BostonDriver
0 Replies
Login or Register to Ask a Question