これは私の最初のcodegolfの質問なので、適切でない場合は事前に謝罪し、フィードバックを歓迎します。
次の形式のファイルがあります。
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
実際の内容は、区切り文字と同様に異なります。内容は単なるテキストです。区切り文字は1行に1回だけ表示されます。このパズルでは、区切り文字を自由に変更してください。たとえば、「%」を区切り文字として使用します。
望ましい出力:
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上で動作する実装に最も興味があります)。
次に、2番目の例/テストを示します。「|」に注意してください 区切り文字です。「|」の前のスペース 無関係であり、再送をキーの一部と見なす必要がある場合。出力で区切り文字として「%」を使用していますが、区切り文字を自由に変更できます(ただし、角かっこは使用しないでください)。
入力:
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
リストで次々ません。