Что такое быстрый и лаконичный способ удаления обманов из одной строки?Командная строка для удаления совпадений в очереди
У меня есть файл в следующем формате:
alpha • a | b | c | a | b | c | d
beta • h | i | i | h | i | j | k
gamma • m | n | o
delta • p | p | q | r | s | q
Таким образом, есть заглавный в колонке 1, а затем различные слова с разделителями трубами, с непредсказуемым количеством дублирования. На желаемом выходе удалены одинарные символы:
alpha • a | b | c | d
beta • h | i | j | k
gamma • m | n | o
delta • p | q | r | s
Мой входной файл - несколько тысяч строк. Греческие имена выше соответствуют названиям категорий (например, «бейсбол»); и алфавит соответствует английским словарным словам (которые могут содержать пробелы или акценты), например. «игра в мяч», «биттер», «ловец», «ловец», назначенный нападающий ».
Это может быть запрограммировано многими способами, но я подозреваю, что есть разумный способ сделать это. Я часто встречаюсь с вариациями этого сценария и задаюсь вопросом, есть ли краткий и элегантный способ сделать это. Я использую MacOS, поэтому некоторые непринужденные параметры unix недоступны.
Bonus сложность, я часто комментарий в конце, который должен быть сохранен, например,
zeta • x | y | x | z | z ; comment here
P.S. этот вход фактически выход предварительного StackOverflow вопрос: Command line to match lines with matching first field (sed, awk, etc.)
Итак, у вас есть три разделителя, средняя точка или пуля, трубы и (иногда) точки с запятой. Имеются ли эти символы когда-либо, кроме как разделителей? Важно ли, чтобы имена были в алфавитном порядке после того, как они были уникальными? –
Мой пример сортируется, но реальный ввод не сортируется. Эти три разделителя (•, | ,;) ТОЛЬКО появляются в полевых разделителях. Порядок вывода является гибким (может быть таким же, как вход или сортировка). –