Многострочный аргумент команды DOS команды findstr
findstr /v "black"  File1.txt
Над командой DOS будет отображаться содержимое файла "File1.txt", который не соответствует строке "черный".
Как изменить эту команду, если мне нужно отфильтровать слова "черный" и "белый"?
4 ответа
Как отфильтровать слова "черный" и "белый"?
Следующая команда отобразит все строки, содержащие "black" NOR "white":
findstr /v "black white" blackwhite.txt
Следующая команда отобразит все строки, содержащие "black" ИЛИ ЖЕ "white":
findstr "black white" blackwhite.txt
Следующая команда отобразит все строки, содержащие ТОЧНО "black white ":
findstr /c:"black white" blackwhite.txt
Следующая команда отобразит все строки, содержащие "black" А ТАКЖЕ "white":
findstr "white" blackwhite.txt | findstr "black"
Заметки:
- Если строка поиска содержит несколько слов, разделенных пробелами, то - findstrвернет строки, содержащие любое слово (ИЛИ).
- Буквальный поиск ( - /C:string) обратит это поведение и позволит искать фразу или предложение. Литеральный поиск также позволяет искать знаки препинания.
Пример файла данных (blackwhite.txt):
red
black
white
blue
black white
black and white
Пример вывода:
F:\test>findstr /v "black white" blackwhite.txt
red
blue
F:\test>findstr "black white" blackwhite.txt
black
white
black white
black and white
F:\test>findstr /c:"black white" blackwhite.txt
black white
F:\test>findstr "white" blackwhite.txt | findstr "black"
black white
black and white
Дальнейшее чтение
- Индекс AZ командной строки Windows CMD - Отличный справочник по всем вопросам, связанным с командной строкой Windows.
- findstr - поиск строк в файлах.
Если вам нужно отобразить все строки со словами "черный" или "белый", то избавьтесь от /v в вашей команде.
Попробуйте: findstr белый File1.txt или findstr черный File1.txt или findstr "черный белый" File1.txt
Операнд /V напечатает все строки, которые НЕ содержат строку поиска.
Тип findstr /? для получения дополнительной информации о том, как использовать findstr.
Вот еще один пример использования другого метода вывода, а не просто прямого поиска файлов. Например, проверьте состояние сетевого порта, гдеport = 98765иstatus = ESTABLISHED or LISTENING.
Например, это запускает netstat каждые пять секунд, а затем передает вывод netstat в FIND (можно также использоватьFINDSTR), затем передает эти результаты в findstr для фильтрации, когда порт находится в определенном состоянии (в данном случаеESTABLISHED or LISTENING).
      netstat -an 5 | find "98765" | findstr "ESTABLISHED LISTENING"
TCP    192.168.123.456:57349     10.10.12.34:98765 ESTABLISHED
                                        
                                    
                                Хотел добавить к этому упоминание о том, как использовать findstr со стандартным выводом в Windows для нескольких поисков.
Вот как вывести список только имен сетевых интерфейсов и их IP-адресов:
      ipconfig /all | findstr /i /L /c:"Ethernet" /c:"IPv4"
В документации Microsoft подробно описан каждый параметр.
- 
/iИгнорирует регистр символов при поиске строки.
- 
/lОбрабатывает строки поиска буквально.
- 
/c:<string>Использует указанный текст в качестве буквальной строки поиска.