Ten wpis nie jest dostępny w języku polskim
Archiwum tagów: bash
Grep is Your friend
Wysłane przez docent
dnia grudnia 7, 2011
Brak komentarzy
GREP stands for Global Regular Expression Print. I think that every sysop loves grep, grepping and anything that has something in common with grep – this tool makes our lives really easier ;) If You’re not convinced than I think You’re in a good place – maybe the following text will convince You :)
- Excluding irrelevant words: sometimes We have to grep for some word but We have to exclude some irrelevant string. E.g. let’s grep for ‘index.html’ but let’s also exclude ‘404’ from this:
1grep 'index.html' access.log | grep -v 404 - egrep (extended grep, same as grep -e or grep –regexp=) allows us to do more powerful search including regular expressions with metacharacters like +, ?, | and ()
1egrep "html|cgi" access.log - Counting results – If we just want to know the number of lines that matched our query – We would use:
1grep -c 'index.html' access.log - Case Insensitive search – by default grep is case sensitive, If we want to make case insensitive search than we use:
1grep -i 'Index' access.log - Matching eXact word only – by default grepping for Word will return lines containing SomeWord and <strongwordbytheway< strong=””>. If We would like to find only those lines containing exact word Word We should use:
1grep -x '404' access.log
grep -w could be also useful here.
- Matching left and right side of the word – to search for instances of string matching Word in the end or start We use \< or \>:Below would match any word starting with access, like access_entry:
1grep '\<access'
Below would match any word ending with error, like general_error:
1grep 'error\>'
- Showing context results – sometimes We would like to grep for some errors in logs, but we also would like to view the context of that log entry – e.g. grepping for ‘Relay access denied‘ in Postfix logs to see If that error is occurring with some pattern:
1grep --context=3 'Relay access denied' maillog - zgrep – this one would grep in the compressed gzip file – just like gunzip -c flog.gz | grep Word:
1zgrep 'Relay access denied' maillog3.gz - Coloring matched words – We can highlight our matched words with some color (check man page to see how to set exact color):
1grep --color 'Relay access denied' maillog3.gz