Отфильтруйте различные идентичные символы в нескольких словах

У меня есть очень большой список слов. Как я могу использовать Unix (или возможно Python) для нахождения экземпляров нескольких слов, соответствующих определенным совместно использующим символ критериям? Например, я хочу, чтобы Word 1 и 2 имели те же четвертые и седьмые символы, Word 2 и 3, чтобы иметь те же четвертые и девятые символы и Word 3 и 4, чтобы иметь те же вторые, четвертые, и девятые символы.

Пример:

aaadiigjlf
abcdefghij
aswdofflle
bbbbbbbbbb
bisofmlwpa
fsbdfopkld
gikfkwpspa
hogkellgis

мог бы возвратиться

abcdefghij
aaadiigjlf
fsbdfopkld
aswdofflle

Править: Для разъяснения мне нужен код для возврата любых слов, которые совместно используют те же символы в данных положениях; у меня нет определенных символов (как "d" и "g", как дали в примере) в памяти. Кроме того, я хотел бы, чтобы это смогло возвратить слова, которые не соответствуют ВСЕМ критериям; например, в данном примере, Word 1 и 4 совместно используют четвертый символ, но не обязательно второе, седьмое, и девятый. С программой я работаю в ее законченной форме, я ожидаю, что это возвратит очень маленький список слов (вероятно, только десять) на основе девяти строгих совместно использующих символ критериев.

-1
задан 29 January 2019 в 16:09

1 ответ

Использовать grep который использует Регулярные выражения:

# Find all lines where the fourth and seventh letter are "d" and "g"
grep '...d..g'  somefile

# Find all lines where the fourth and ninth letters are "d" and "l"
grep '...d....l' somefile

Если бы Вы хотите осуществить оба правила, Вы объединили бы их в цепочку вместе использование канала:

grep '...d..g' somefile | grep '...d....l'

Можно уменьшить многословие regex и нескольких точек с помощью синтаксиса {123} вместо 123 точек, таких как:

egrep '.{3}d.{2}g' somefile

Обратите внимание, что, поскольку Ваше регулярное выражение становится более сложным, Вы, возможно, должны использовать egrep поддерживать некоторый синтаксис, такой как синтаксис повторения выше.

1
ответ дан 26 October 2019 в 10:42

Другие вопросы по тегам:

Похожие вопросы: