1

У меня есть большая коллекция текстовых файлов.

Я ищу способ найти две строки, которые находятся на одной строке (в том же файле) в коллекции, где расстояние в символах между этими двумя строками не больше расстояния, которое я указываю.

Например, если текстовый файл содержит:

The quick brown fox jumps over the lazy dog

и я передаю строки fox и over с расстоянием 7 (или более), он вернет эту строку, потому что 7 - это расстояние между этими словами.

Я работаю на машине с Windows 8.

2 ответа2

4

Поскольку вы работаете в Windows, используйте Notepad++ вместе с плагином RegEx Helper.

Плагин Notepad++, который позволяет пользователям разрабатывать регулярные выражения и проверять их по открытым документам.

Если вам нужна вся строка, используйте ^.*fox.{0,7}over.*$ Вместо fox.{0,7}over

2

Используйте egrep. Или grep -e вариант.

egrep -o "fox.{1,7}over" filename.txt

В общем это:

egrep -o "string1.{1,7}string2" filename.txt

Все вышеперечисленные параметры будут возвращать только соответствующую часть. Чтобы полная строка была возвращена, не используйте опцию -o. Так было бы:

egrep "string1.{1,7}string2" filename.txt

Чтобы применить его ко всем файлам в папке, вы будете использовать:

egrep "string1.{1,7}string2" *

Все это предполагает, что есть хотя бы одно разделение символов.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .