[linux] Deel van een tekst bestand sorteren.
Geert Stappers
stappers op debian.org
Do Feb 15 22:42:58 CET 2024
On Thu, Feb 15, 2024 at 09:57:04AM +0100, Paul Slootman via Linux wrote:
> On Wed 14 Feb 2024, Geert Stappers via Linux wrote:
> > >
> > > vim -c 'argdo g/^-/,/^[^-]/-1!sort' -c wq *
> >
> > Ja, die doet het. Dank je wel.
> > Ja, die doet het voor het voorbeeld. Nog steeds bedankt.
> >
> > Groeten
> > Geert Stappers
> >
> > Worstelt met
> >
> > Kop
> > MARKER Romeo
> > MARKER Charlie
> > MARKER Mike
> > Staart
>
> vim -c 'argdo g/^ MARKER/,/^[^ ][^ ][^M]/-1!sort' -c wq *
>
> Het wordt lastiger als er meerdere lijstjes in 1 file staan.
> Dan zou ik weer snel teruggrijpen naar perl...
>
Ik stond op het punt om iets in Python3 te maken.
De aangeboden voorzet in Perl was te mooi om ongebruikt te laten.
----------->8------------------
#!/usr/bin/perl
$MARKER = ' MARKER'; # a regex
$AB = 1; # At Begin
@HEAD = ();
@ITEMS = ();
@TAIL = ();
foreach $fn (@ARGV) {
open(IN, $fn) or die "Can't open file '$fn': $!\n";
while (<IN>) {
if (/$MARKER/) {
push @ITEMS, $_;
$AB = 0; # not anymore at begin
}
else {
if ($AB) {
push @HEAD, $_;
}
else {
push @TAIL, $_;
}
}
}
} continue {
close IN;
open(OUT, ">$fn") or die "Can't open file '$fn' for output: $!\n";
print OUT @HEAD;
print OUT sort @ITEMS;
print OUT @TAIL;
close OUT;
# For a next file
$AB = 1;
@HEAD = ();
@ITEMS = ();
@TAIL = ();
}
-------------------8<----------
> Paul
Dank
Groeten
Geert Stappers
--
Silence is hard to parse
Meer informatie over de Linux
maillijst