"次の行がパターンに一致しない場合にのみパターンに一致する行を印刷します"ソリューション述べたが、私はちょうど私が次の行の現在の行と同じパターンで始まるあまりにもファイル内のすべての行を印刷したい場合は、上記のコマンドを変更する方法を知りたいと思ったawk:次の行も同じパターンで始まる場合のみ、パターンで始まる行を表示します。
awk 'a=/^O/{x=$0} !a&&x{print x;x=0;}' myfile
です。
例えば
ファイルのテキストが含まれています
abc this is a line
def
abc this is line 2
ghi
abc this is line 3
abc this is line 4
jkl
mno
abc this is line 5
jkl
abc this is line 6
abc this is line 9
jkl
コマンドは、以下の行が印刷されなければならないようなものであるべきである:
abc this is line 3
abc this is line 6
任意の助けいただければ幸いです。
お手数をおかけしていただきありがとうございます。以下のような要件を満たすためにオリジナルの質問を編集すると、複数の類似した行がある場合は役に立ちません。
次の行が異なるパターンで終わるようにファイル内のすべての行が印刷される場合、awkコマンドは何になりますか?
例えば:どのように私は、学生が合格していない生徒名を持つすべての行を印刷するようにawkを使用することができます
Student name is A
Student name is B
Student name is C
result for C is pass
Student name is D
result for D is pass
Student name is E
result for E is pass
Student name is F
result for F is pass
Student name is G
result for G is pass
Student name is H
Student name is I
result for I is pass
:ファイルが含まれている場合。 だから、上記の例のために印刷された線は、次のようになります。
Student name is A
Student name is B
Student name is H
は、私は彼らの次の行にはawkを使用して、文字列PASSで終了していない学生で始まるすべての行を印刷できますか?
3つ以上の連続する行がこのパターンで始まる場合はどうなりますか? –
あなたはこれを後ろ向きに考えています。あなたがトランプを転がしているときに、あなたが次のカードをまだ見ていないので、次のカードがエースになるかどうかに基づいて、その時点で何かをするのは難しいです。一方、エースを裏返すと、前のカードがすでに見たことがあるので、あなたの前のカードが王だったら、何かをするのはとても簡単です。同じ2枚のカードを同じ順序で使用していますが、それについて考えてみると、難しい解決方法と簡単な解決方法が異なって表示されます。あなたが以前に来たものに基づいてそれを行うことができれば、次に来るものに基づいて物事をしようとしないでください。 –