Многострочный аргумент команды DOS команды findstr

21
findstr /v "black"  File1.txt

Над командой DOS будет отображаться содержимое файла «File1.txt», который не соответствует строке «черный».

Как изменить эту команду, если мне нужно отфильтровать слова «черный» и «белый»?

Arun
источник
2
findstrИнструмент не является частью MS-DOS. Поставляется с Windows (XP +?). Я думаю, что вы имеете в виду «инструмент командной строки» вместо «команда DOS».
Мишель де Рюйтер

Ответы:

30

Как отфильтровать слова «черный» и «белый»?

Следующая команда отобразит все строки, содержащие "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" AND "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

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

ДэвидПостилл
источник
1
очень интересно .. Я думаю, что это будет искать белый и черныйfindstr "white" File2.txt | findstr "black"
barlop
хорошо, так как у нас есть NOR, так что есть еще перестановка, которую мы могли бы считать отсутствующей. NAND. Еще один, который мы могли бы считать пропавшим без вести, это XOR
штопор
@ barlop Я не могу понять, как сделать NAND или XOR: / Я знаю, каким должен быть вывод, но как туда добраться ...
DavidPostill
может быть, нет хорошего быстрого способа, это, вероятно, будет пакетный файл, проверяющий уровень ошибок, возможно, лучше использовать какой-то другой инструмент, если он делает это, похоже, что grep не может. Но awk может делать совсем немного или, конечно, perl unix.stackexchange.com/questions/177513/…
barlop
0

Если вам нужно отобразить все строки со словами «черный» или «белый», то избавьтесь от / v в вашей команде.

Попробуйте: findstr белый File1.txt или findstr черный File1.txt или findstr "черный белый" File1.txt

Операнд / V напечатает все строки, которые НЕ содержат строку поиска.

Тип findstr /? для получения дополнительной информации о том, как использовать findstr.

Дин Спайсер
источник