<div dir="ltr"><div>Dat is niet iets dat je in een one-liner kan doen... maar wel iets dat je ook gewoon aan chatgpt had kunnen vragen :)</div><div><br></div><div>Prompt:</div><div>Van een aantal tekstbestanden wil ik een gedeelte sorteren met linux commandline tools (en de rest van je vraag)</div><div><br></div><div>ChatGPT:<br></div><div>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:<br><br># Zoek de regels die met een streepje beginnen en sorteer ze<br>grep ^\- input.txt | sort > sorted_section.txt<br><br># Knip de sectie uit het originele bestand<br>sed '/^\-/,/^$/!d' input.txt > extracted_section.txt<br><br># Verwijder de regels die met een streepje beginnen uit het originele bestand<br>sed '/^\-/d' input.txt > head_tail.txt<br><br># Voeg de gesorteerde sectie terug in het originele bestand<br>paste -d '\n' head_tail.txt sorted_section.txt > output.txt<br><br># Verwijder tijdelijke bestanden<br>rm sorted_section.txt extracted_section.txt head_tail.txt</div><div><br></div><div>Dit script doet het volgende:<br><br>Het selecteert de regels die beginnen met een streepje (^\-) en sorteert ze, en slaat ze op in een tijdelijk bestand genaamd sorted_section.txt.<br>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.<br>Het verwijdert de regels die met een streepje beginnen uit het originele bestand en slaat de rest op in head_tail.txt.<br>Het voegt de gesorteerde sectie terug in het originele bestand met behulp van paste.<br>Het verwijdert de tijdelijke bestanden om het op te schonen.<br>Het uiteindelijke resultaat wordt opgeslagen in output.txt.<br><br><br><br><br><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Feb 13, 2024 at 8:33 PM Geert Stappers via Linux <<a href="mailto:linux@lists.nllgg.nl">linux@lists.nllgg.nl</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
Hoi,<br>
<br>
<br>
Van een zwik tekstbestanden wil ik een gedeelte sorteren.<br>
<br>
Voorbeeld bestand<br>
---<br>
Er was eens<br>
- Romeo<br>
- Charlie<br>
- Mike<br>
Lang en gelukkig<br>
---<br>
<br>
Dat zou na de gedeeltelijke sortering<br>
---<br>
Er was eens<br>
- Charlie<br>
- Mike<br>
- Romeo<br>
Lang en gelukkig<br>
---<br>
moeten worden.<br>
<br>
<br>
De echte bestanden hebben meer "kop" en "staart" regels.<br>
En de aantalen regels varieren.<br>
<br>
Het te sorteren deel is wel met "grep" te herkenen.<br>
In het voorbeeld  met `grep ^\-`<br>
- Romeo<br>
- Charlie<br>
- Mike<br>
<br>
<br>
Hoe die regels te sorteren en kop plus staart heel te laten?<br>
<br>
<br>
<br>
Groeten<br>
Geert Stappers<br>
-- <br>
Silence is hard to parse<br>
</blockquote></div><br clear="all"><br><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div>Mark Janssen  --  <a href="mailto:mark@sig-io.nl" target="_blank">mark@sig-io.nl</a><br>Unix / Linux Open-Source and Internet Consultant<br></div></div></div>