How to search for multiple strings in a log file using less command in unix? How to search for multiple strings in a log file using less command in unix? linux linux

How to search for multiple strings in a log file using less command in unix?


When you want to search for string1 or string2, use /string1|string2.You said you wanted lines where you find both:

/string1.*string2

When you do not know the order in the line and want to see the complete line, you will need

/.*string1.*string2.*|.*string2.*string1.*

Or shorter

/.*(string1.*string2|string2.*string1).*

Combining more words without a fixed order will become a mess, and filtering first with awk is nice.


Use awk to filter the file and less to view the filtered result:

awk '/pattern1/ && /pattern2/ && /pattern3/' file.log | less

If the file is big you may want to use stdbuf to see results earlier in less:

stdbuf awk '/pattern1/ && /pattern2/ && /pattern3/' file.log | less