ある行を別の行に置き換える

ある行を別の行に置き換える

ファイルがあります

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すると、twithタグはスクリプトの末尾に分岐するため、Line 1後に連続する行がある場合は再置換を避けることができますMATCH。先行/末尾のスペースを調整する正規表現です。

おすすめ記事