Dotan Cohen wrote: > The following page has a nice example of how to highlight text in logfiles: > http://www.euperia.com/linux/how-to-highlight-keywords-when-using-tail/903 > > Here is the example: > tail -f file.log | perl -pe 's/keyword/\e[1;31;43m$&\e[0m/g' > > What are the regex replacements in the second part of the replace > called? They are rather hard to goolge for without a name! If anybody > has a good resource bookmarked with examples, I would love to see that > as well.
The only regexp replacement in the right hand side is "$&". The perlre docs say: man perlre $& returns the entire matched string. (At one point $0 did also, but now it returns the name of the program.) This comes from use in 'sed'. In sed the docs say: man sed s/regexp/replacement/ Attempt to match regexp against the pattern space. If successful, replace that portion matched with replacement. The replacement may contain the special character & to refer to that portion of the pattern space which matched, and the special escapes \1 through \9 to refer to the corresponding matching sub-expressions in the regexp. And can be used like this: $ echo fore | sed 's/fore/be&/' before All of the \e [ (escape bracket) patterns are terminal escape sequence colors as the others mentioned. Personally I find using them like that annoying since they are non-portable. It would be better to use 'tput' to generate those from the terminfo data instead. > tail -f file.log | perl -pe 's/keyword/\e[1;31;43m$&\e[0m/g' Instead of that I would be inclined to use grep's --color option. Same thing but easier to type and remember. tail -f file.log | grep --color keyword Bob
signature.asc
Description: Digital signature