Questa è la mia prima domanda su codegolf, quindi mi scuso in anticipo se non è appropriato e accolgo con favore qualsiasi feedback.
Ho un file con questo 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
I contenuti effettivi variano, così come il delimitatore. I contenuti sono solo testo. Il delimitatore appare solo una volta per riga. Per questo puzzle, sentiti libero di cambiare il delimitatore, ad esempio usa "%" come delimitatore.
Uscita desiderata:
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
Ho già entrambi gli script Ruby e Awk per unire questo, ma sospetto che sia possibile avere un breve line-up. vale a dire un one-liner che può essere utilizzato insieme a tubi e altri comandi sulla riga di comando. Non riesco a capirlo, e il mio script è troppo lungo da comprimere solo dalla riga di comando.
Personaggi più corti preferiti. L'input non è necessariamente ordinato, ma siamo interessati solo a unire le righe consecutive con i primi campi corrispondenti. Esistono linee illimitate con i primi campi corrispondenti. Il campo 1 potrebbe essere qualsiasi cosa, ad esempio nomi di frutti, nomi propri, ecc.
(Corro su MacOS, quindi sono personalmente più interessato alle implementazioni che girano su Mac).
Ecco un secondo esempio / test. Avviso "|" è il delimitatore. Lo spazio prima del "|" è irrilevante e se il rinvio deve essere considerato parte della chiave. Sto usando "%" come delimitato nell'output, ma di nuovo, mi sento libero di cambiare il delimitatore (ma non uso parentesi quadre).
Ingresso:
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
Uscita desiderata:
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"]
non è un input desiderato da testare, poiché le parole chiave per A
non sono una dopo l'altra nell'elenco.