OS/2 grep 有一个很棒的功能,它会在找到搜索项之前显示 n 行。unix 中有没有类似的功能?

OS/2 grep 有一个很棒的功能,它会在找到搜索项之前显示 n 行。unix 中有没有类似的功能?

Solaris 更好,但我更喜欢 Linux 或我可以编译的版本。有这样的系统吗?

答案1

您可以从以下位置获取 GNU grep 及其 Solaris 依赖项sunfreeware.com可以作为 pkg 格式的二进制下载安装在 /usr/local/bin 中,也可以作为源包安装。

答案2

就 GNU grep 而言,这将显示匹配前的行数:

# grep -B number

相当于之后:

# grep -A number

您可以在这里下载 GNU Grep:http://www.gnu.org/s/grep/

答案3

一个小的 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/用要搜索的实际正则表达式或模式替换。

相关内容