Це моє перше питання про кодегольф, тому я заздалегідь вибачаюся, якщо це не підходить, і я вітаю будь-які відгуки.
У мене файл у такому форматі:
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
Фактичний вміст змінюється, як і роздільник. Зміст - це лише текст. Розмежувач з’являється лише один раз на рядок. Для цієї головоломки сміливо міняйте роздільник, наприклад, використовуйте "%" як роздільник.
Бажаний вихід:
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
У мене вже є сценарії в стилі ruby і awk, щоб об'єднати це, але я підозрюю, що можливо мати короткий oneliner. тобто однолінійний, який можна використовувати разом з трубами та іншими командами в командному рядку. Я не можу це зрозуміти, і мій власний сценарій - це довго, щоб просто стиснути в командному рядку.
Кращі символи віддають перевагу. Введення не обов'язково сортується, але нас цікавить лише об'єднання послідовних рядків із відповідними першими полями. Існують необмежені рядки з відповідними першими полями. У полі 1 може бути що завгодно, наприклад, назви фруктів, власні назви тощо.
(Я працюю на MacOS, тому мене особисто найбільше цікавлять реалізації, які працюють на mac).
Ось другий приклад / тест. Повідомте "|" є роздільником. Пробіл перед знаком "|" не має значення, і якщо обурення слід вважати частиною ключа. Я використовую "%" як обмежений у виході, але знову ж таки, сміливо міняйте роздільник (але не використовуйте квадратні дужки).
Вхід:
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
["A|some text", "B|other text", "A|yet some other text"]це не бажаний вхід для тестування, оскільки ключові слова для Aсписку не є один за одним.