Многострочный аргумент команды 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

Дальнейшее чтение

Если вам нужно отобразить все строки со словами "черный" или "белый", то избавьтесь от /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>Использует указанный текст в качестве буквальной строки поиска.
Другие вопросы по тегам