Ceci est ma première question sur le codegolf, donc je m'excuse à l'avance si ce n'est pas approprié, et je me réjouis de tout commentaire.
J'ai un fichier avec ce 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
Le contenu réel varie, tout comme le délimiteur. Le contenu n'est que du texte. Le délimiteur n'apparaît qu'une fois par ligne. Pour ce puzzle, n'hésitez pas à modifier le délimiteur, par exemple, utilisez "%" comme délimiteur.
Sortie désirée:
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
J'ai déjà des scripts ruby et awk pour fusionner cela, mais je soupçonne qu'il est possible d'avoir un court oneliner. c'est-à-dire une doublure qui peut être utilisée avec des tuyaux et d'autres commandes sur la ligne de commande. Je ne peux pas le comprendre, et mon propre script est trop long pour simplement compresser sur la ligne de commande.
Les caractères les plus courts sont préférés. L'entrée n'est pas nécessairement triée, mais nous souhaitons uniquement fusionner les lignes consécutives avec les premiers champs correspondants. Il y a un nombre illimité de lignes avec les premiers champs correspondants. Le champ 1 peut être n'importe quoi, par exemple des noms de fruits, des noms propres, etc.
(Je fonctionne sur MacOS, donc je suis personnellement le plus intéressé par les implémentations qui fonctionnent sur Mac).
Voici un deuxième exemple / test. Remarquez "|" est le délimiteur. L'espace avant le "|" est hors de propos, et si le renvoi doit être considéré comme faisant partie de la clé. J'utilise "%" comme délimité dans la sortie, mais encore une fois, n'hésitez pas à changer le délimiteur (mais n'utilisez pas de crochets).
Contribution:
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
Sortie désirée:
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"]
n'est pas une entrée souhaitée à tester, car les mots clés pour A
ne sont pas l'un après l'autre dans la liste.