Strange sort -r results


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Strange sort -r results
# 8  
Old 11-20-2018
Code:
_FDMEE_LOG=$(awk ... )

# 9  
Old 11-20-2018
Quote:
Originally Posted by SIMMS7400
And I need it to return the file suffix with the highest numerical value. Therefore it should return 1042 but instead it's returning Client_944.log. Do you know why?
As a matter of fact: yes. You have already been helped and don't need sort any more for this, but it is perhaps beneficial to understand it because you sure will need it next time. So here it goes:

Per defaut sort sorts alphabetically, not numerical: that means "100" comes before "99", because "1" is "earlier" in the ASCII code than "9". Since you requested a reverse sort (sort -r) you got the "last" as first, which was "944". Here is an example that shows the problem: consider following input file:

Code:
1
2
3
4
5
6
7
8
9
10
11

Now sort it:

Code:
$ sort /input/file
1
10
11
2
3
4
5
6
7
8
9

You need to tell sort to sort numerically to get the expected result:

Code:
$ sort -n /input/file
1
2
3
4
5
6
7
8
9
10
11

But in your case only a part of the field to sort for is numeric, therefor you need to use a "key-definition". sort treats input as "records" (=lines), which consist of "fields", separated by field separators. The usual field separator is whitespace and the "fields" resemble therefore "words".

We need to explain to sort that only a certain part of the field is relevant for the sorting. The easiest way is to split the lines at the "_", so we use this as a field separator:

Code:
sort -t'_'

Notice this also takes care of the leading space which could have posed a problem if we would rely on whitespace. Now we have two fields in each line, before and after the underscore. We now need to tell sort that only the first 4 digits/characters in this field are relevant for the sorting (it doesn't matter that some numbers only have 3 digits, sort will throw characters out in this case). Key definitions are done that way:

Code:
-k <field>.<start-character>,<field>.<end-character><options>

Hence:

Code:
sort -t'_' -k 2.1,2.4n /path/to/input

Now, we are only interested in certain lines in the file, so we need to filter these out beforehand. And we need to reverse the sort too:

Code:
grep "^outbox\/logs\/Client_[0-9]*\.log" /path/to/input |  sort -t'_' -k 2.1,2.4rn

I hope this helps.

bakunin
# 10  
Old 11-20-2018
This was a huge help! Thank you so much!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Strange results from 'strings | sort'

Using the 'strings' command and piping the result to 'sort' is producing strange results. I get block of lines that begin with asterisks, then a block that begins with some text, then more lines that begin with asterisks. The actual content is correct - lines beginning with asterisks is the... (5 Replies)
Discussion started by: edstevens
5 Replies

2. Shell Programming and Scripting

Find with rm command gives strange results

I want to remove any files that are older than 2 days from a directory. It deletes those files. Then it comes back with a message it is a directory. What am I doing wrong here? + find /mydir -mtime +2 -exec rm -f '{}' ';' rm: /mydir is a directory (2 Replies)
Discussion started by: jtamminen
2 Replies

3. UNIX for Advanced & Expert Users

Rsync in progress, strange results

Disclaimer, I've been a Linux admin for a while but don't frequently setup rsysnc jobs. Here's the command I'm running on CentOS 5.5, rsync 2.6.8: rsync -arvz --progress --compress-level=9 /src/ /dest/ /src has 1.5 TB of data, /dest/ is a new destination and started out empy. Oh ya, both... (4 Replies)
Discussion started by: DustinT
4 Replies

4. UNIX for Dummies Questions & Answers

sort find results

Hi, I have a problem with a shell script. The script should find all .cpp and .h files and list them. With: for file in `find $src -name '*.h' -o -name '*.cpp' it gives out this: H:\FileList\A\E\F\G\newCppFile.cpp H:\FileList\header01.h H:\FileList\B\nextCppFile.cpp ... (4 Replies)
Discussion started by: shellBeginner75
4 Replies

5. Shell Programming and Scripting

Help with sort folder results

Here is the code, but the list is not sorted properly (alphabetically)? <?php function folderlist(){ $startdir = './'; $ignoredDirectory = '.'; $ignoredDirectory = '..'; if (is_dir($startdir)){ if ($dh = opendir($startdir)){ while (($folder = readdir($dh)) !== false){ if... (0 Replies)
Discussion started by: mrlayance
0 Replies

6. Shell Programming and Scripting

Strange results from FDISK?????

Hi all, I am writing script that returns the size of each disk or partition when called. I am using FDISK -l and parsing the results to get the result I want. When I execute fdisk -l it shows correct results, BUT when I execute the same thing with results to be put in a variable, I get strange... (5 Replies)
Discussion started by: alirezan
5 Replies

7. UNIX for Advanced & Expert Users

Sort command - strange behaviour

Hi guys, I have the following example data: A;00:00:19 B;00:01:02 C;00:00:13 D;00:00:16 E;00:02:27 F;00:00:12 G;00:00:21 H;00:00:19 I;00:00:13 J;00:13:22 I run the following sort against it, yet the output is as follows: sort -t";" +1 -nr example_data.dat A;00:00:19 (16 Replies)
Discussion started by: miwinter
16 Replies

8. UNIX for Dummies Questions & Answers

Strange Results

I am using th following to get the percentage and have never used bc before: percent=$(echo "scale=4;(34117/384000)*100" | bc) 8.884600 percent=$(echo "scale=2;(34117/384000)*100" | bc) 8.00 Why do I get the results of 8.00 instead of 8.88 when using a scale of 2. I only want 2 decimal... (2 Replies)
Discussion started by: mariaa33
2 Replies

9. AIX

Strange ls results..

Multipart question.. Can anybody explain why this happens : -rw-rw-r-- 1 fnsw fnusr 1531061 Feb 13 21:45 filename1.log -rw-rw-r-- 1 fnsw fnusr 1760706 Feb 10 22:10 filename2.log -rw-rw-r-- 1 fnsw fnusr 1525805 Aug 16 2005 filename3.log -rw-rw-r-- 1... (3 Replies)
Discussion started by: dbridle
3 Replies

10. UNIX for Dummies Questions & Answers

How to sort find results

Hi-- Ok. I have now found that: find -x -ls will do what I need as far as finding all files on a particular volume. Now I need to sort the results by the file's modification date/time. Is there a way to do that? Also, I notice that for many files, whereas the man for find says ls is... (8 Replies)
Discussion started by: groundlevel
8 Replies
Login or Register to Ask a Question