|
grep All I will say is that it depends on your definition of 'hacking'. The following will increase your power in working with a Unix based system. Grep is from a family of commands: grep, egrep, and fgrep. They all search the named input files (or standard input if no files are named) for lines containing a match to the given pattern. Each of the grep commands are basically the same, the only real difference is that egrep uses a slightly different syntax for its pattern matching, whereas fgrep uses fixed strings. There is also another member to the grep family, and that is zgrep. Zgrep is used to search compressed files and is invoked the same way as grep. In this text I will be detailing grep, and I feel that it is easier to learn and understand by seeing examples, so I hope to provide alot of usefull ones :) For examples I will be using a list of Bauhaus songs. Just cut and paste the following to a file and name it bauhaus.txt ----cut here---- The passion of lovers Bela Lugosi's dead She's in parties Ziggy stardust Wasp Hope King Volcano The sanity assassin Terror couple hill colonel ----cut here---- The syntax for grep is as follows: grep [options] pattern [file] Usefull options: -c counts number of matching lines -i ignore caps -n includes the line number -s suppress error messages -v lines NOT mattching the pattern A simple example: #grep -c Z bauhaus.txt 1 The above statement counts how many lines contain the letter Z (case sensitive) and displays the result. If I typed the following, it will display the lines: #grep Z bauhaus.txt Ziggy stardust With the added option -v, lines NOT matching will be counted: #grep -vc Z bauhaus.txt 8 and displayed: #grep -v Z bauhaus.txt The passion of lovers Bela Lugosi's dead She's in parties Wasp Hope King Volcano The sanity assassin Terror couple hill colonel displayed and line numbered: #grep -vn Z bauhaus.txt 1:The passion of lovers 2:Bela Lugosi's dead 3:She's in parties 5:Wasp 6:Hope 7:King Volcano 8:The sanity assassin 9:Terror couple hill colonel Options can be mixed like any other command. Regular expressions are used to provide grep with expressions whcih set locations of patterns and ranges of characters (all regular expressions must be quoted). The hat (^) means start of line, and the dollar ($) means the end of the line. To display lines ending with 's' #grep 's$' bauhaus.txt The passion of lovers She's in parties To display lines not ending in 's' and also number them: #grep -vn 's$' bauhaus.txt 2:Bela Lugosi's dead 4:Ziggy stardust 5:Wasp 6:Hope 7:King Volcano 8:The sanity assassin 9:Terror couple hill colonel The full stop (.) represents a single character wildcard. eg the following will display any line that has any character before the 'e': #grep '.e' bauhaus.txt The passion of lovers Bela Lugosi's dead She's in parties Hope The sanity assassin Terror couple hill colonel More examples: #grep -i '.L' bauhaus.txt - any case, with any character/s before 'L' #grep 'V.....o' bauhaus.txt - V, any 7 characters, then o The square brackets ([]) specify any one of the characters enclosed. eg, to display the lines beginning with 'T', 'W' or 'Z': #grep '^[TWZ]' bauhaus.txt The passion of lovers Ziggy stardust Wasp The sanity assassin Terror couple hill colonel For a range of characters, use a hyphen: #grep '^[A-J] bauhaus.txt Bela Lugosi's dead Hope More examples: #grep '^[A-Za-z0-9] bauhaus.txt - all letters / numbers #grep '[0-9]$' bauhaus.txt - ending with a number #grep -v '[a-m]$' bauhaus.txt - lines that dont end with a-m When the hat (^) is used in the square brackets it means 'not'. eg the following will show lines not beginning with 'A' to 'G': #grep '^[^A-G]' bauhaus.txt The passion of lovers She's in parties Ziggy stardust Wasp King Volcano The sanity assassin Terror couple hill colonel A wildcard can also be used (*). eg the following will display lines beginning with 'T' and ending with 's' #grep '^T.*s$' bauhaus.txt The passion of lovers The following will display lines beginning with 'M' to 'Z' and ending in 's' or 't': #grep '^[M-Z].*[st]$' bauhaus.txt The passion of lovers She's in parties Ziggy stardust The above was just an introduction to grep, there is a myrid of other statements, redirections (>>) and piping (|) that can be done using it. From the above, you should now be able to do alot of sorting, extracting, and removing from logs ALOT easier now ;) (grep -v <ip> /var/log/messages >> /var/log/messages.2)