To jest moje pierwsze pytanie o codegolf, więc z góry przepraszam, jeśli nie jest właściwe, i cieszę się z wszelkich opinii.
Mam plik w tym formacie:
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
Rzeczywista zawartość jest różna, podobnie jak separator. Treść jest tylko tekstem. Separator pojawia się tylko raz w linii. W przypadku tej układanki możesz zmienić ogranicznik, np. Użyj „%” jako ogranicznika.
Pożądane wyjście:
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
Mam już zarówno skrypty ruby, jak i awk, aby to scalić, ale podejrzewam, że można mieć krótki oneliner. tj. jednowierszowy, którego można używać wraz z potokami i innymi poleceniami w wierszu poleceń. Nie potrafię tego rozgryźć, a mój własny skrypt musi zbyt długo kompresować się w wierszu poleceń.
Preferowane najkrótsze postacie. Dane wejściowe niekoniecznie są sortowane, ale interesuje nas tylko łączenie kolejnych wierszy z dopasowywaniem pierwszych pól. Istnieje nieograniczona liczba linii z pasującymi pierwszymi polami. Pole 1 może być dowolne, np. Nazwy owoców, nazwy własne itp.
(Pracuję na MacOS, więc osobiście najbardziej interesują mnie implementacje działające na Macu).
Oto drugi przykład / test. Uwaga „|” jest ogranicznikiem. Przestrzeń przed „|” jest nieistotny i jeśli resent powinien być uważany za część klucza. Używam „%” jako ogranicznika w danych wyjściowych, ale ponownie możesz zmienić ogranicznik (ale nie używaj nawiasów kwadratowych).
Wejście:
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
Pożądane wyjście:
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"]znaczy : nie jest pożądanym wejściem do przetestowania, ponieważ słowa kluczowe dla Anie są jeden po drugim na liście.