Найти "mystring" в файлах и вернуть только определенную часть совпадающих строк

1069
Vicky Dev

У меня есть команда ниже, чтобы перечислить каждый файл в текущем каталоге и его подкаталогах, содержащих «mystring» вместе со строкой, где найдено совпадение строки поиска.

@echo off setlocal findstr /s mystring *.txt >> searchResult.list endlocal exit 

Но самое сложное в том, что я не хочу, чтобы имя файла и путь выводились в результате. Также мне не нужна вся совпадающая строка, вся совпадающая строка, как показано ниже:

Somestring::mystring('the_str_i_need', the(string i don't need)); 

И мне нужна только the_str_i_needчасть строки, которая будет напечатана в файле "searchresult.list".

Как мне достичь этих целей с помощью findstrкакой-либо другой альтернативной команды?

0
Если вы используете конструкцию наподобие foreach (`for / R`?), А затем используете` findstr` для определенного %% var, вы можете подавить имя файла. возврат подстроки может стать "волосатым". см., например: http://stackoverflow.com/questions/11769435/batch-script-substring-from-string. Конечно, вы можете обработать файл результатов, используя что-то вроде notepad ++, который имеет открытый исходный код и обрабатывает регулярные выражения в функции поиска / замены. Yorik 8 лет назад 0
Пожалуйста, [отредактируйте] свой вопрос и включите небольшой тестовый файл, содержащий искомую строку и отдельную строку в вопросе, показывающую ** точный ** вывод, который вы хотели бы найти при обнаружении «mystring». DavidPostill 8 лет назад 0
это невозможно с помощью findstr. Это намного проще сделать с помощью powershell https://stackoverflow.com/q/40780784/995714 phuclv 6 лет назад 0

0 ответов на вопрос