別の文字列の前に前の文字列を見つけようとしています。例えば:
StringA <stuff 1>
StringA <stuff 2>
StringD
...
StringB <stuff 3>
StringA <stuff 4>
StringA <stuff 5>
StringA <stuff 6>
StringD
StringB <stuff 7>
ファイル内の StringB の直前にあるすべての「StringA」を見つけたいと思います。
この例の出力は次のようになります。
StringA <stuff 2>
StringA <stuff 6>
次を使用して、すべての StringB の行番号を見つけることができます: grep -n "StringB"
次に、1 行目から StringB の行に移動する sed -n 1,$line_numberp を使用できます。私はgrep "StringA" |を実行します。テール -n1
これは機能しているように見えますが、少し面倒です。望ましい結果を達成するためのより良い方法はありますか?