sedを使用して一度に2行を置き換えてインデントする方法は?

sedを使用して一度に2行を置き換えてインデントする方法は?

Pythonファイルから次の2行のコードをsed

多くのコマンドを試しましたが、すべてsedプレーンテキスト行で機能しますが、スペース/タブ^ [ \ s]または^ [ \ t]のある行では機能しません。

def get_user_creds(user):
    # some lines of code
    user.invoke()
    user.process(user)

期待される:

def get_user_creds(user):
    # some lines of code
    user.reinvoke()

ベストアンサー1

reですべての行を挿入しuser.invoke()てすべての行を削除するのはとても簡単です。user.process(user)問題は、行が一緒に表示されたときにのみ変更することです。

では、常に2行を一緒に処理し、常に追加の行を追加し、両方の行を埋め、最初の行を印刷して削除して、次の行を処理し続ける必要があるsed場合にこのパターンを使用できます。N;P;DNPD

あなたの場合:

sed '$!N;s/user.invoke().*\n.*user.process(user)/user.reinvoke()/;P;D'

(現在はテストできませんが、動作すると確信しています。)

おすすめ記事