This is my first codegolf question, so I apologize in advance if it's not appropriate, and I welcome any feedback.
I have a file with this 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
The actual contents vary, as does the delimiter. The contents are just text. The delimiter only appears once per line. For this puzzle, feel free to change the delimiter, e.g. use "%" as the delimiter.
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
I already have both ruby and awk scripts to merge this, but I suspect it's possible to have a short oneliner. i.e. a one-liner that can be used along with pipes and other commands on the command line. I can't figure it out, and my own script is to long to just compress on the command line.
Shortest characters preferred. Input is not necessarily sorted, but we are only interested in merging consecutive lines with matching first fields. There are unlimited lines with matching first fields. Field 1 could be anything, e.g. names of fruits, proper names, etc.
(I run on MacOS, so I am personally most interested in implementations that run on the mac).
Here is a second example/test. Notice "|" is the delimiter. The space before the "|" is irrelevant, and if resent should be considered part of the key. I am using "%" as a delimited in the output, but again, feel free to change the delimiter (but don't used square brackets).
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
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