Esta es mi primera pregunta de codegolf, así que me disculpo de antemano si no es apropiado, y agradezco cualquier comentario.
Tengo un archivo con este formato:
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
Los contenidos reales varían, al igual que el delimitador. Los contenidos son solo texto. El delimitador solo aparece una vez por línea. Para este rompecabezas, siéntase libre de cambiar el delimitador, por ejemplo, use "%" como delimitador.
Salida deseada:
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
Ya tengo los scripts ruby y awk para fusionar esto, pero sospecho que es posible tener una línea corta. es decir, una línea que se puede usar junto con tuberías y otros comandos en la línea de comandos. No puedo entenderlo, y mi propio script es demasiado largo para comprimir en la línea de comando.
Se prefieren los caracteres más cortos. La entrada no está necesariamente ordenada, pero solo nos interesa fusionar líneas consecutivas con los primeros campos coincidentes. Hay líneas ilimitadas con los primeros campos coincidentes. El campo 1 podría ser cualquier cosa, por ejemplo, nombres de frutas, nombres propios, etc.
(Ejecuto en MacOS, por lo que personalmente estoy más interesado en las implementaciones que se ejecutan en Mac).
Aquí hay un segundo ejemplo / prueba. Aviso "|" Es el delimitador. El espacio antes del "|" es irrelevante, y si se reenvía debe considerarse parte de la clave. Estoy usando "%" como delimitado en la salida, pero nuevamente, siéntase libre de cambiar el delimitador (pero no use corchetes).
Entrada:
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
Salida deseada:
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"]
no es una entrada deseada para probar, ya que las palabras clave para A
no son una tras otra en la lista.