一致する最初の10行[重複]

一致する最初の10行[重複]

一致の最初の10行を取得するには?オプションBでgrepを使用してからヘッドに配管することは効果があるようですが、これを行うより簡単な方法はありますか?

たとえば、次のようなテキストファイルがある場合

a
b
c
d
e
f
g
h
i
j
k
l
m

モードを「l」に選択すると、「b」の最初の10行が得られます。

答え1

grep/methodはheadうまくいきます。より簡単な方法があるかどうか疑問です。一致するアイテムが複数ある場合は、最初の一致のみが表示されます。

$ grep -B 10 l x|head -1
b
$

循環バッファを使用するGNUawkソリューション。一致する項目が複数ある場合は、各一致が表示されます。

$ awk '/^l$/{print a[NR%10]};{a[NR%10]=$0}' x
b
$

関連情報