Назад | Перейти на главную страницу

В OS / 2 grep была отличная функция, которая показывала вам n строк ДО того, как был найден элемент поиска. Есть ли где-нибудь аналог в unix?

Солярис был бы предпочтительнее, но я возьму linux или что-нибудь, что я могу скомпилировать. Такой зверь существует?

Что касается GNU grep, это покажет вам количество строк до совпадения:

# grep -B number

Эквивалент после:

# grep -A number

Вы можете скачать GNU Grep здесь: http://www.gnu.org/s/grep/

Вы можете получить GNU grep и его зависимости для Solaris из sunfreeware.com либо в виде двоичной загрузки в формате pkg, которая устанавливается в / usr / local / bin, либо в виде пакета с исходным кодом.

Также подойдет небольшой скрипт на awk:

#!/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 }
}

заменить /pattern/ с фактическим регулярным выражением или шаблоном для поиска.