findstr DOS Command's multiple string argument

22

6

findstr /v "black"  File1.txt

Above DOS command will display content of 'File1.txt' which are not matching string "black".

How to modify this command , if I need to filter words "black" and "white" ?

Arun

Posted 2015-05-03T05:34:56.330

Reputation: 357

2The findstr tool is not part of MS-DOS. It comes with Windows (XP+?). I think you mean 'command line tool' instead of 'DOS command'. – Michel de Ruiter – 2016-07-15T09:17:18.793

Answers

34

How do I filter words "black" and "white"?

The following command will display all lines containing "black" NOR "white":

findstr /v "black white" blackwhite.txt

The following command will display all lines containing "black" OR "white":

findstr "black white" blackwhite.txt

The following command will display all lines containing EXACTLY "black white":

findstr /c:"black white" blackwhite.txt

The following command will display all lines containing "black" AND "white":

findstr "white" blackwhite.txt | findstr "black"

Notes:

  • When the search string contains multiple words, separated with spaces, then findstr will return lines that contain either word (OR).

  • A literal search (/C:string) will reverse this behaviour and allow searching for a phrase or sentence. A literal search also allow searching for punctuation characters.

Example data file (blackwhite.txt):

red
black
white
blue
black white
black and white

Example output:

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

Further Reading

DavidPostill

Posted 2015-05-03T05:34:56.330

Reputation: 118 938

1very interesting.. I guess this would be searching for white AND black findstr "white" File2.txt | findstr "black" – barlop – 2015-07-17T02:33:02.293

well, since we have NOR, So there is still a permutation we could consider missing. NAND. Another one we could consider missing, is XOR – barlop – 2015-07-17T10:55:20.787

@barlop I can't figure out how to do NAND or XOR :/ I know what the output should be but how to get there ... – DavidPostill – 2015-07-17T12:06:38.947

maybe there isn't a nice quick way, it'd probably be a batch file checking errorlevel probably better to use some other tool if doing that, looks like grep can't,. But awk can do quite a bit or of course perl http://unix.stackexchange.com/questions/177513/grep-with-logic-operators

– barlop – 2015-07-17T12:29:59.837

Let us continue this discussion in chat.

– barlop – 2015-07-17T12:31:45.140

0

If you need to display all lines with the words "black" or "white" then get rid of the /v in your command.

Try: findstr white File1.txt or findstr black File1.txt or findstr "black white" File1.txt

The /V operand will print all lines that DO NOT contain your search string.

Type findstr /? for more info on how to use findstr.

Dean Spicer

Posted 2015-05-03T05:34:56.330

Reputation: 611