比赛的前 10 行

sta*_*cko 1 grep text-processing head

如何从比赛中获得前 10 行?我认为将 grep 与选项 B 一起使用,然后将其输送到 head 中会起作用,但是有没有更简单的方法来做到这一点?

例如,如果我有一个这样的文本文件

a
b
c
d
e
f
g
h
i
j
k
l
m
Run Code Online (Sandbox Code Playgroud)

如果我选择模式为“l”,我将得到第 10 行,即“b”。

ste*_*eve 5

grep/head方法工作完全正常。怀疑有更简单的方法。如果有多个匹配项,则只显示第一个匹配项。

$ grep -B 10 l x|head -1
b
$
Run Code Online (Sandbox Code Playgroud)

GNUawk解决方案,使用循环缓冲区。如果有多个匹配项,则显示每个匹配项。

$ awk '/^l$/{print a[NR%10]};{a[NR%10]=$0}' x
b
$
Run Code Online (Sandbox Code Playgroud)