Предполагая, что ваши слова действительно представляют собой простые строки, разделенные тире, вы можете использовать преобразование Шварца следующим образом
#!/bin/bash
# Assumes words are in /tmp/words
while IFS= read line
do
sorted=$(printf "%s\n" "$line" | tr - '\n' | LC_ALL=C sort | tr '\n' -)
# printf "sorted= >%s<, line= >%s<\n" "$sorted" "$line" >&2
printf "%s\t%s\n" "$line" "$sorted"
done < /tmp/words |
sort -t $'\t' -uk2,3 |
cut -f1
«Слова» между тире отделяются, сортируются в алфавитно-цифровом порядке и соединяются. (Раскомментируйте printf
в середине, чтобы увидеть эти отсортированные строки. )Он используется в качестве ключа сортировки для sort
с ограничением уникальности, поэтому строки, содержащие повторяющийся ключ, отбрасываются. Побочным -эффектом является изменение исходного порядка; если это неприемлемо, вы должны указать это как новое требование в своем вопросе. Затем ключ сортировки отбрасывается и выводятся исходные данные.
Пример вывода для данных, представленных в вашем вопросе
a-b-c
d-a-x
Предостережения
Is this possible?
Нет. Вы можете легко поделиться пользовательскими настройками, создав отдельный раздел для /home
и смонтировав его во всех используемых вами ОС. И если у вас разные /home
s, вы можете использовать символические ссылки.
однако совместное использование программ не имеет никакого смысла (разные дистрибутивы могут использовать разные версии приложений, поэтому в некоторых случаях файлы конфигурации могут быть несовместимы ), кроме того, большинство пользователей никогда ничего не трогают в / д., так что этот совет остается в силе.