一致の最初の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
$