Esta é a minha primeira pergunta sobre codegolf, por isso peço desculpas antecipadamente, se não for apropriado, e agradeço qualquer feedback.
Eu tenho um arquivo com 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
O conteúdo real varia, assim como o delimitador. O conteúdo é apenas texto. O delimitador aparece apenas uma vez por linha. Para este quebra-cabeça, fique à vontade para alterar o delimitador, por exemplo, use "%" como delimitador.
Saída desejada:
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
Eu já tenho scripts ruby e awk para mesclar isso, mas suspeito que é possível ter um pequeno oneliner. isto é, uma linha que pode ser usada junto com pipes e outros comandos na linha de comando. Não consigo descobrir, e meu próprio script é muito longo para compactar na linha de comando.
Caracteres menores preferidos. A entrada não é necessariamente classificada, mas estamos interessados apenas em mesclar linhas consecutivas com os primeiros campos correspondentes. Existem linhas ilimitadas com os primeiros campos correspondentes. O campo 1 pode ser qualquer coisa, por exemplo, nomes de frutas, nomes próprios, etc.
(Eu corro no MacOS, por isso estou pessoalmente mais interessado em implementações que são executadas no mac).
Aqui está um segundo exemplo / teste. Observe "|" é o delimitador. O espaço antes do "|" é irrelevante e se o ressentimento deve ser considerado parte da chave. Estou usando "%" como delimitado na saída, mas, novamente, sinta-se à vontade para alterar o delimitador (mas não use colchetes).
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
Saída desejada:
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ão é uma entrada desejada para teste, pois as palavras-chave para A
não são uma após a outra na lista.