Dies ist meine erste Codegolf-Frage, daher entschuldige ich mich im Voraus, wenn dies nicht angemessen ist, und freue mich über jegliches Feedback.
Ich habe eine Datei mit diesem Format:
a | rest of first line
b | rest of second line
b | rest of third line
c | rest of fourth line
d | rest of fifth line
d | rest of sixth line
Der tatsächliche Inhalt variiert, ebenso wie das Trennzeichen. Der Inhalt ist nur Text. Das Trennzeichen wird nur einmal pro Zeile angezeigt. Für dieses Puzzle können Sie das Trennzeichen ändern, z. B. "%" als Trennzeichen verwenden.
Gewünschte Ausgabe:
a | rest of first line
b | rest of second line % rest of third line
c | rest of fourth line
d | rest of fifth line % rest of sixth line
Ich habe bereits Ruby- und Awk-Skripte, um dies zusammenzuführen, aber ich vermute, dass es möglich ist, einen kurzen Oneliner zu haben. dh ein Einzeiler, der zusammen mit Pipes und anderen Befehlen in der Befehlszeile verwendet werden kann. Ich kann es nicht herausfinden, und mein eigenes Skript ist zu lang, um es nur in der Befehlszeile zu komprimieren.
Kürzeste Zeichen bevorzugt. Die Eingabe muss nicht unbedingt sortiert sein, sondern es geht uns nur darum, aufeinanderfolgende Zeilen mit übereinstimmenden ersten Feldern zusammenzuführen. Es gibt unbegrenzte Zeilen mit übereinstimmenden ersten Feldern. Feld 1 kann alles sein, z. B. Namen von Früchten, Eigennamen usw.
(Ich laufe auf MacOS, daher bin ich persönlich am meisten an Implementierungen interessiert, die auf dem Mac laufen).
Hier ist ein zweites Beispiel / Test. Hinweis "|" ist das Trennzeichen. Der Raum vor dem "|" ist irrelevant, und wenn erneut gesendet werden sollte als Teil des Schlüssels. Ich verwende "%" als Begrenzungszeichen in der Ausgabe, kann aber auch hier das Begrenzungszeichen ändern (aber keine eckigen Klammern verwenden).
Eingang:
why|[may express] surprise, reluctance, impatience, annoyance, indignation
whom|[used in] questions, subordination
whom|[possessive] whose
whom|[subjective] who
whoever|[objective] whomever
whoever|[possessive] whosever
who|[possessive] whose
who|[objective] whom
Gewünschte Ausgabe:
why|[may express] surprise, reluctance, impatience, annoyance, indignation
whom|[used in] questions, subordination%[possessive] whose%[subjective] who
whoever|[objective] whomever%[possessive] whosever
who|[possessive] whose%[objective] whom
["A|some text", "B|other text", "A|yet some other text"]
ist keine zu testende Eingabe, da die Schlüsselwörter für A
nicht nacheinander in der Liste stehen.