次のファイルがあります。
ブラブラ
パターン 2
ブラ
パターン 1
パターン 2
ブラ
ブラ パターン 1 ブラ
ブラー
パターン1
pattern1
最後の一致から最初の項目を含む太字の行全体を削除したいと思いますpattern2
。
誰にもアイデアがありますか?
ありがとうございます!
ベストアンサー1
これは1つのex
ライナーです。 (ex
前作とスクリプト形式ではそうですvi
。)
printf '%s\n' '$?pattern2?/pattern1/d' x | ex file.txt
保存x
と終了。%p
変更したファイルのみを印刷したい場合は、次のように変更してください。いいえ変更を保存します(テストに適しています)。
$
はファイルの最後の行を表し、は現在の位置から始まり、?pattern2?
逆方向検索の最初の結果を表すアドレス、は行削除コマンドです。pattern2
/pattern1/
d
ex
順方向および逆方向アドレス指定が必要な場合に使用します。
vi
Vimでも同じことを対話的に実行できます。
vim file.txt
その後、入力してください。
:$?pattern2?/pattern1/d
そしてEnterを押します。
その後、保存して:x
Enterを押して終了します。