![Trending Articles on Technical and Non Technical topics](/images/trending_categories.jpeg)
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
How to preserve colouring after piping grep to grep in Linux?
In order to be able to preserve colouring after using the pipe in between the grep togrep command, we must first be aware of what the grep command is and how to use it on Linux.
The grep command in Linux is used to filter searches in a file for a particular pattern of characters. It is one of the most used Linux utility commands to display the lines that contain the pattern that we are trying to search.
Normally, the pattern that we are trying to search in the file is referred to as the regular expression.
Syntax
grep [options] pattern [files]
While there are plenty of different options available to us, some of the most used are −
-c : It lists only a count of the lines that match a pattern -h : displays the matched lines only. -i : Ignores, case for matching -l : prints filenames only -n : Display the matched lines and their line numbers. -v : It prints out all the lines that do not match the pattern
Now, let’s consider a case where we want to find a particular pattern in all the files in a particular directory, say dir1.
Syntax
grep -rni "word" *
In the above command replace the “word” placeholder with
For that we make use of the command shown below −
grep -rni "func main()" *
The above command will try to find a string “func main()” in all the files in a particular directory and also in the subdirectories as well.
Output
main.go:120:func main() {}
In case we only want to find a particular pattern in a single directory and not the subdirectories then we need to use the command shown below −
grep -s "func main()" *
Consider the output shown below of a simple file that consists of three numbers.
immukul@192 dir1 % cat bar 11 12 13
Now when we make use of the grep command( grep -e '1' * ) on the above file, the output will not be coloured.
immukul@192 dir1 % grep -e '1' * 11 12 13
Now if we use a grep with a grep with a pipe in between, the colouring will also not be there.
immukul@192 dir1 % grep -e '1' * | grep -ve '12' 11 13
We can use the command shown below to make sure that the colouring is preserved.
Command
grep -e '1' * | grep -ve '12' | grep -e '1' --color=always
Output
immukul@192 dir1 % grep -e '1' * | grep -ve '12' | grep -e '1' --color=always 11 13