ファイルがあります
Line 1
Line 2 MATCH
Line 3
Line 4
Line 1
Line 2 MATCH
Line 3
Line 4
それぞれのケースで「MATCH」と「Line 1」に行を変更したいと思います。私は別の質問を探してみましたが、一致する行が最後の行に移動し、最終出力を取得するために私のバージョンを再作成するコードをよく理解していません。たとえば、次のようになります。
Line 2 MATCH
Line 1
Line 3
Line 4
Line 2 MATCH
Line 1
Line 3
Line 4
ベストアンサー1
sed
そして使用N;P;D cycle
:
sed -e '$!N;s/\(Line 1\)\(\n\)\(.*MATCH.*\)/\3\2\1/;t' -e 'P;D' infile
これは with 行MATCH
の前に :: がある場合にのみ置き換えられます。成功Line 1
すると、t
withタグはスクリプトの末尾に分岐するため、Line 1
後に連続する行がある場合は再置換を避けることができますMATCH
。先行/末尾のスペースを調整する正規表現です。