まだ複雑なログファイルのために問題が発生しています。私が望むのは、最初に文字列Xに一致する行を検索し、次に文字列Yに一致する行を見つけることです。それでは一緒に印刷したいです。問題は時々XはあるがYはないということです。
入力例
31 X
32 Y
33 X
34 Y
35 X
36 X
37 Y
38 X
39 X
期待される出力
31 X
32 Y
33 X
34 Y
36 X
37 Y
したがって、行35、38、39は文字列Yがないため省略されます。
私の出発点は次のとおりです。
cat $filename | grep -E X\|Y | grep -A1 'X'
ただし、これは行35、38、39をフィルタリングしません。私が望むのは条件です。 Yがある場合は、X行のみを印刷してからY行を印刷します。それ以外の場合は何も印刷されません。
ベストアンサー1
使用sed
:
sed -n ':b /X/ { h; n; /Y/! b b; H; x; p; }'
出力:
31 X
32 Y
33 X
34 Y
36 X
37 Y