У меня очень большой список слов.Как я могу использовать Unix, чтобы найти экземпляры нескольких слов, соответствующие определенным критериям разделения символов?Например, я хочу, чтобы Слова 1 и 2 имели одинаковые четвертый и седьмой символы, Слова 2 и 3 имели одинаковые четвертый и девятый символы, а Слова 3 и 4 имели одинаковые второй, четвертый и девятый символы.
Пример:
aaadiigjlf
abcdefghij
aswdofflle
bbbbbbbbbb
bisofmlwpa
fsbdfopkld
gikfkwpspa
hogkellgis
может вернуть
abcdefghij
aaadiigjlf
fsbdfopkld
aswdofflle
Что-то вроде
grep '...d..g' somefile
будет работать только для определенных символов, но мне нужно, чтобы оно работалодля любых общих персонажей в определенных позициях;Я не имею в виду конкретные символы (такие как «d» и «g», как указано в примере).Кроме того, я хотел бы, чтобы он мог возвращать слова, которые не соответствуют ВСЕМ критериям;например, в приведенном примере слова 1 и 4 разделяют четвертый символ, но не обязательно второй, седьмой и девятый.С программой, которую я запускаю в завершенном виде, я ожидаю, что она выдаст очень маленький список слов (вероятно, только десять) на основе девяти строгих критериев совместного использования символов.
РЕДАКТИРОВАТЬ: из-за некоторыхпутаница на других форумах, я добавил это уточнение.Вот проблема именно в том, как мне это дали.
Мне дали список слов и сказали, что в списке есть десять десятибуквенных слов, которые могут вписаться в сетку следующим образом:
-112--3---
---2--3-4-
-5-2----4-
-5-2--6-4-
75-2--6---
75---8----
7----8----
79---8----
-9--0-----
-9--0---xx
Каждое слово читается поперек.Каждый пробел с одинаковыми цифрами (и x), занимающими его (все 1, все 2 и т. Д.), Является одной и той же буквой (разные цифры потенциально могут быть одной и той же буквой, хотя и не обязательно).