<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Knowledge Base (Posts about sort)</title><link>https://bgstack15.ddns.net/blog/</link><description></description><atom:link href="https://bgstack15.ddns.net/blog/categories/sort.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2026 &lt;a href="mailto:bgstack15@gmail.com"&gt;bgstack15&lt;/a&gt; 
&lt;a rel="license" href="https://www.gnu.org/licenses/gpl-3.0.html"&gt;
&lt;img alt="GNU General Public License v3.0"
style="border-width:0; margin-bottom:12px;"
src="https://bgstack15.ddns.net/.images/gplv3-127x51.png"&gt;&lt;/a&gt;</copyright><lastBuildDate>Thu, 19 Feb 2026 14:30:41 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Sort using rDNS naming</title><link>https://bgstack15.ddns.net/blog/posts/2025/01/23/sort-using-rdns-naming/</link><dc:creator>bgstack15</dc:creator><description>&lt;h3&gt;Notice&lt;/h3&gt;
&lt;p&gt;This post has nothing to do with dns or &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/en.wikipedia.org/wiki/Reverse_DNS_lookup"&gt;reverse dns&lt;/a&gt;. This is only talking about sorting text.&lt;/p&gt;
&lt;h2&gt;Main&lt;/h2&gt;
&lt;p&gt;Sort of like how flippin' &lt;a href="https://bgstack15.ddns.net/blog/outbound/https:/specifications.freedesktop.org/desktop-entry-spec/latest/file-naming.html"&gt;freedesktop.org&lt;/a&gt; uses "reverse DNS names" to get such lovely files as &lt;code&gt;/usr/share/applications/org.geeqie.Geeqie.desktop&lt;/code&gt;, I wanted to sort some domain names. A sorted list looks less like I just made it up, and like I pulled it out of a report or tool!&lt;/p&gt;
&lt;p&gt;So I have a small script here that sorts via "reverse DNS" convention.&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;&lt;span class="nv"&gt;awk&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;F&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;.&lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;
{
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;NF&lt;/span&gt;&lt;span class="c1"&gt;; i&amp;gt;0; i--) {&lt;/span&gt;
        &lt;span class="nv"&gt;printf&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;%s %s&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;, $&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;, &lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;i&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; ? &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;.&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; : &lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
    }
    &lt;span class="nv"&gt;print&lt;/span&gt; &lt;span class="mh"&gt;$0&lt;/span&gt;
}&lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt; | sort | awk &lt;/span&gt;&lt;span class="s1"&gt;'&lt;/span&gt;{&lt;span class="nv"&gt;print&lt;/span&gt; $&lt;span class="nv"&gt;NF&lt;/span&gt;}&lt;span class="s1"&gt;'&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;It was too small to bother putting it in the files/ for this post.&lt;/p&gt;
&lt;h6&gt;Updated 2026-02-17 I would name this script &lt;code&gt;rdns-sort&lt;/code&gt;.&lt;/h6&gt;</description><category>dns</category><category>sort</category><guid>https://bgstack15.ddns.net/blog/posts/2025/01/23/sort-using-rdns-naming/</guid><pubDate>Thu, 23 Jan 2025 14:23:00 GMT</pubDate></item><item><title>Python natural sort by object attribute</title><link>https://bgstack15.ddns.net/blog/posts/2022/03/02/python-natural-sort-by-object-attribute/</link><dc:creator>bgstack15</dc:creator><description>&lt;p&gt;I wanted to sort a list of custom classes in Python. I wanted to sort the list by the .albumid attribute of the objects. A natural sort is where the order is 1-9, 10-19, 20-29, etc., instead of 1, 10-19, 2, 20-29, 3, 30-39, etc. It is very useful for when you want to sort a string that nominally has numbers at the beginning.&lt;/p&gt;
&lt;pre class="code literal-block"&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;natural_sort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;l&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;attrib&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nf"&gt;convert&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lambda&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nc"&gt;text&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nc"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nc"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;isdigit&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nc"&gt;text&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="n"&gt;alphanum_key&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;lambda&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;key&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;convert(c) for c in re.split('([0-9&lt;/span&gt;&lt;span class="o"&gt;]+&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="s1"&gt;', key.__dict__[attrib])]&lt;/span&gt;
&lt;span class="s1"&gt;    return sorted(l, key=alphanum_key)&lt;/span&gt;

&lt;span class="s1"&gt;results = natural_sort(albums, '&lt;/span&gt;&lt;span class="n"&gt;albumid&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I posted this insight on &lt;a href="https://stackoverflow.com/questions/4836710/is-there-a-built-in-function-for-string-natural-sort/71301293#71301293"&gt;Stackoverflow&lt;/a&gt;.&lt;/p&gt;</description><category>natural</category><category>python</category><category>sort</category><guid>https://bgstack15.ddns.net/blog/posts/2022/03/02/python-natural-sort-by-object-attribute/</guid><pubDate>Wed, 02 Mar 2022 14:22:03 GMT</pubDate></item></channel></rss>