grep
, the global regular expression print, allows us to select and/or mark from a text stack in the context of the specified pattern. The entered template is processed within the specified path, results suitable for the template are listed by marking. By using it alone or with pipes |
, its capabilities can be developed and/or evaluated in different-purpose operations.
The simplest use by itself is as follows.
grep '[search-text/pattern]' [path-to-directory-or-file]
We can move on to examples. I will use the access_log.txt
document of the web server for operations. I want to extract only POST
operations from the text stack. So I can use a command like this.
grep 'POST' /home/nginx/access_log.txt
What if I want to perform an exclude operation instead of a select operation? For example, I want to list the transactions that took place outside the 5.12.88.10
IP address.
grep -v '5.12.88.10' /home/nginx/access_log.txt
Let's develop the example a little more. Let's filter the search operations and direct them to the keywords.txt
file with >
. Unless otherwise stated, operations will be performed in the context of case sensitivity. In the example, I applied the command by specifying -i
to execute the operation without case distinction.
grep -i 'search' /home/nginx/access_log.txt > /home/nginx/keywords.txt
There are also parameters and usage methods that we can use in line marking, file name and content search operations. Of course, it is possible to get more detailed information with grep –help
. However, to give a short summary; Using the -n
parameter, we can get the line number of matches that match our search pattern inside a file. Using it with cat
, we can cast the fields we want with head
and tail
.
cat -n /home/nginx/access_log.txt | grep "spam" | head -5
As seen in the example, we do not need to apply the grep
command first. It is possible to continue many related operations in grep
after the pipe (|
) mark.
ls -alh | grep '.sql'
With the above command, the lines containing .sql
will be listed and marked. You can edit the command with directories (^d
) and files (^-
).