I had a list of items I wanted to sort in a non-standard way:
app-function1.site1.jeppson.org
app-function2.site3.jeppson.org
app-function3.site4.jeppson.org
app-function4.site2.jeppson.org
app-function1.site6.jeppson.org
app-function3.site9.jeppson.org
app-function4.site7.jeppson.org
It’s a generalized list for publication but you get the idea. I wanted to sort by site name. Thanks to this post I found it’s relatively easy. You can tell the sort
command to use a character as a tab delimiter (-t) and then specify which key “column” to sort by (-k)
In my case I sorted by site by specifying the dot character '.'
as the delimiter, and the second “column” as the key '-k2'
The end result was this:
cat apps-by-site-unsorted.txt | sort -t. -k2
app-function1.site1.jeppson.org
app-function4.site2.jeppson.org
app-function2.site3.jeppson.org
app-function3.site4.jeppson.org
app-function1.site6.jeppson.org
app-function4.site7.jeppson.org
app-function3.site9.jeppson.org
Success
Update 2024-10-18
I discovered two new handy features
- -V to sort numbers naturally (1 comes before 10)
- a second -k1 variable to sort the first column after the second one
|sort -t. -k2 -k1 -V
This allows me to sort human readable, by region, in my hostname list. Awesome.