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" ?

1

4 Answers

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

5

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.

Wanted to add to this to mention how to use findstr with stdout on Windows for multiple searches.

Here is how to list only network interface names and their ip addresses:

ipconfig /all | findstr /i /L /c:"Ethernet" /c:"IPv4" 

The Microsoft Documentation details each parameter

  • /i Ignores the case of the characters when searching for the string.
  • /l Processes search strings literally.
  • /c:<string> Uses the specified text as a literal search string.
1

Here is another example using a different output method, not just a straight file search. For example check for network port status where port = 98765 and status = ESTABLISHED or LISTENING.

For example this runs a netstat every five seconds, then pipes the netstat output to a FIND (could also use FINDSTR), then pipes those results to findstr to filter when the port is in a certain state (in this case ESTABLISHED or LISTENING).

netstat -an 5 | find "98765" | findstr "ESTABLISHED LISTENING" TCP 192.168.123.456:57349 10.10.12.34:98765 ESTABLISHED 
1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy