Deutsch   English   Français   Italiano  
<v4mcda$99f$1@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!feed.opticnetworks.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Janis Papanagnou <janis_papanagnou+ng@hotmail.com>
Newsgroups: comp.unix.shell
Subject: Re: Numerically sorted arguments (in shell)
Date: Sun, 16 Jun 2024 11:48:25 +0200
Organization: A noiseless patient Spider
Lines: 64
Message-ID: <v4mcda$99f$1@dont-email.me>
References: <v4grk8$2pp51$1@dont-email.me> <v4l5p1$3lqic$10@dont-email.me>
 <v4ll54$3sd11$1@dont-email.me> <v4lra6$3t7b2$2@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
Injection-Date: Sun, 16 Jun 2024 11:48:27 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="567efb17d94aca7729125b64ceeb67a7";
	logging-data="9519"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX19zrxlMHKl3wMzW+1NqrAIT"
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101
 Thunderbird/45.8.0
Cancel-Lock: sha1:FGfcXVq6mfC3aFolY6KhHqWDRoA=
X-Enigmail-Draft-Status: N1110
In-Reply-To: <v4lra6$3t7b2$2@dont-email.me>
Bytes: 3293

On 16.06.2024 06:56, Lawrence D'Oliveiro wrote:
> On Sun, 16 Jun 2024 05:11:29 +0200, Janis Papanagnou wrote:
> 
>> I don't know of this feature in Perl or Python; please provide some hint
>> if there is a feature like the one I need. Some code samples for
>> demonstration of your point are also welcome.
> 
> Python solution:
> 
>     import re
> 
>     items = \
>         [
>             "P1.HTM", "P10.HTM", "P11.HTM", "P2.HTM", "P3.HTM",
>             "P4.HTM", "P5.HTM", "P6.HTM", "P7.HTM", "P8.HTM", "P9.HTM",
>         ]
> 
>     print(items)
> 
>     print \
>       (
>         sorted
>           (
>             items,
>             key = lambda f :
>                 tuple
>                   (
>                     (lambda : p, lambda : int(p))[i % 2 != 0]()
>                         for i, p in enumerate(re.split("([0-9]+)", f))
>                   )
>           )
>       )
> 
> output:
> 
>     ['P1.HTM', 'P10.HTM', 'P11.HTM', 'P2.HTM', 'P3.HTM', 'P4.HTM', 'P5.HTM', 'P6.HTM', 'P7.HTM', 'P8.HTM', 'P9.HTM']
>     ['P1.HTM', 'P2.HTM', 'P3.HTM', 'P4.HTM', 'P5.HTM', 'P6.HTM', 'P7.HTM', 'P8.HTM', 'P9.HTM', 'P10.HTM', 'P11.HTM']
> 

Thanks. Though I'm not familiar with Python to understand that code;
it's too far from any language I've been using.

The (for me) interesting question, though, is; how does it solve the
task I had been addressing? - For convenience I reiterate one main
application...

I want from my shell command line interface call a viewer (or any
other application) with a list of files. If in shell I do, e.g.,

  viewer P*.HTM

the list gets sorted lexicographically. How would the main function
look like that I could embed in my call to make a numerically sorted
list. Say, something like, for example,

  viewer $( p_sort P*.HTM )

where p_sort would be the Python code. - Note: this is no appropriate
solution since it would anyway not work correctly for file names with
embedded blanks and newlines. I just want to get a closer understanding
how you think this would be usable in shell (or from shell). Thanks.

Janis