したがって、grepを使用すると、-Aを使用して「以降」に一致する行を取得でき、-Bを使用して「前」に一致する行を取得できます。 -C を使用して前後の行を取得することもできます。
このようなデータがあります。
boring data
boring data
boring data
interesting value
MARK
boring data
boring data
boring data
interesting value
MARK
次のような出力を得たいと思います。
interesting value
interesting value
-BIオプションを使用すると、次のようになります。
# cat somefile | grep -B 1 MARK
interesting value
MARK
interesting value
MARK
MARKラインを完全に除外したいです。
答え1
grep
-v
最初のものの後に駅を追加できますgrep
。
$ grep -B1 --no-group-separator 'MARK' somefile | grep -v 'MARK'
interesting value
interesting value
--no-group-separator
一致の間に区切り文字を省略する機能を追加しました。
答え2
使い方が不便な場合は、grep
awkなどの他のツールを使用できます。
awk '/MARK/ { print saved_line }
{ saved_line=$0 }'
ラインが一致すると、保存されたラインを印刷し、必要な場合に備えて各ラインに保存することを意味します。