![一致する最初の10行[重複]](https://linux33.com/image/101879/%E4%B8%80%E8%87%B4%E3%81%99%E3%82%8B%E6%9C%80%E5%88%9D%E3%81%AE10%E8%A1%8C%5B%E9%87%8D%E8%A4%87%5D.png)
一致の最初の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
$