Многострочный аргумент команды 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>
Использует указанный текст в качестве буквальной строки поиска.