6

Solaris would be preferable, but I'll take linux or something I can compile. Does such a beast exist?

tegbains
  • 1,956
  • 12
  • 27
Stu
  • 2,118
  • 2
  • 15
  • 21

3 Answers3

19

As far as GNU grep go, this will show you the number of lines before the match:

# grep -B number

Equivilent for after:

# grep -A number

You can download GNU Grep here: http://www.gnu.org/s/grep/

Kvisle
  • 4,113
  • 23
  • 25
6

You can get GNU grep and it's dependencies for Solaris from sunfreeware.com either as a binary download in pkg format which installs in /usr/local/bin or as a source package.

user9517
  • 114,104
  • 20
  • 206
  • 289
2

A small awk script will also work:

#!/usr/bin/awk -f
BEGIN { context=3; }
{ add_buffer($0) }
/pattern/ { print_buffer() }
function add_buffer(line)
{
    buffer[NR % context]=line
}
function print_buffer()
{
    for(i = max(1, NR-context+1); i <= NR; i++) {
        print buffer[i % context]
    }
}
function max(a,b)
{
    if (a > b) { return a } else { return b }
}

replace /pattern/ with the actual regular expression or pattern to search for.

wnoise
  • 121
  • 3