[linux] Deel van een tekst bestand sorteren.

Mark Janssen maniac.nl op gmail.com
Di Feb 13 20:36:54 CET 2024


Dat is niet iets dat je in een one-liner kan doen... maar wel iets dat je
ook gewoon aan chatgpt had kunnen vragen :)

Prompt:
Van een aantal tekstbestanden wil ik een gedeelte sorteren met linux
commandline tools (en de rest van je vraag)

ChatGPT:
Je kunt dit bereiken met behulp van Linux-commandoregels, waarbij je grep
gebruikt om de relevante regels te selecteren, sed om de relevante sectie
uit te snijden, sort om deze sectie te sorteren, en paste om de gesorteerde
sectie terug te voegen in het oorspronkelijke bestand. Hier is een
voorbeeld van hoe je dit kunt doen:

# Zoek de regels die met een streepje beginnen en sorteer ze
grep ^\- input.txt | sort > sorted_section.txt

# Knip de sectie uit het originele bestand
sed '/^\-/,/^$/!d' input.txt > extracted_section.txt

# Verwijder de regels die met een streepje beginnen uit het originele
bestand
sed '/^\-/d' input.txt > head_tail.txt

# Voeg de gesorteerde sectie terug in het originele bestand
paste -d '\n' head_tail.txt sorted_section.txt > output.txt

# Verwijder tijdelijke bestanden
rm sorted_section.txt extracted_section.txt head_tail.txt

Dit script doet het volgende:

Het selecteert de regels die beginnen met een streepje (^\-) en sorteert
ze, en slaat ze op in een tijdelijk bestand genaamd sorted_section.txt.
Het snijdt de sectie uit het originele bestand die begint met een regel met
een streepje en eindigt met een lege regel (/^\-/,/^$/!d) en slaat deze op
in extracted_section.txt.
Het verwijdert de regels die met een streepje beginnen uit het originele
bestand en slaat de rest op in head_tail.txt.
Het voegt de gesorteerde sectie terug in het originele bestand met behulp
van paste.
Het verwijdert de tijdelijke bestanden om het op te schonen.
Het uiteindelijke resultaat wordt opgeslagen in output.txt.






On Tue, Feb 13, 2024 at 8:33 PM Geert Stappers via Linux <
linux op lists.nllgg.nl> wrote:

>
> Hoi,
>
>
> Van een zwik tekstbestanden wil ik een gedeelte sorteren.
>
> Voorbeeld bestand
> ---
> Er was eens
> - Romeo
> - Charlie
> - Mike
> Lang en gelukkig
> ---
>
> Dat zou na de gedeeltelijke sortering
> ---
> Er was eens
> - Charlie
> - Mike
> - Romeo
> Lang en gelukkig
> ---
> moeten worden.
>
>
> De echte bestanden hebben meer "kop" en "staart" regels.
> En de aantalen regels varieren.
>
> Het te sorteren deel is wel met "grep" te herkenen.
> In het voorbeeld  met `grep ^\-`
> - Romeo
> - Charlie
> - Mike
>
>
> Hoe die regels te sorteren en kop plus staart heel te laten?
>
>
>
> Groeten
> Geert Stappers
> --
> Silence is hard to parse
>


-- 
Mark Janssen  --  mark op sig-io.nl
Unix / Linux Open-Source and Internet Consultant
------------- volgend deel ------------
Een HTML-bijlage is gescrubt...
URL: <https://lists.nllgg.nl/pipermail/linux/attachments/20240213/4f8df29b/attachment.htm>


Meer informatie over de Linux maillijst