複雑な行の前後に複雑な行を挿入する

複雑な行の前後に複雑な行を挿入する

複雑なテキストを含むファイルがあります。

    print("ERROR: passwords don't match")

password = hash_func(password.encode("UTF-8")).hexdigest()

間にこのテキストを挿入する必要があります。

with open('/etc/openvpn/clients/%s/login.txt' % username, 'w') as login_log:
    login_log.write('%s\n%s\n' % (username, password))

それではこうなります。

 else:
        print("ERROR: passwords don't match")


with open('/etc/openvpn/clients/%s/login.txt' % username, 'w') as login_log:
    login_log.write('%s\n%s\n' % (username, password))

password = hash_func(password.encode("UTF-8")).hexdigest()

答え1

cat > user.inp << EOL

with open('/etc/openvpn/clients/%s/login.txt' % username, 'w') as login_log:
    login_log.write('%s\n%s\n' % (username, password))
EOL
sed -i '/ERROR: passwords/r user.inp' /root/add.py
fi

答え2

あなたはこれを行うことができますvi

vi -c '/print("ERROR: passwords don'\''t match")/a\

with open('\''/etc/openvpn/clients/%s/login.txt'\'' % username, '\''w'\'') as login_log:
    login_log.write('\''%s\n%s\n'\'' % (username, password))
.' myfile

(これはすべてコマンドです。)

これにより、ファイルを開いてvi変更できますが、ファイルは保存されません。必要に応じて確認できます。

終了して変更を保存するには、と入力して:xEnterを押します。終了して変更を取り消すには、 と入力し:q!て Enter を押します。

問題が発生した場合は、<Esc>1〜2回押してもう一度やり直してください:q!


スクリプトエディタへの参照は非常に迅速に非常に悪くなる可能性があります。ファイルをインタラクティブに編集するためにファイルを使用して開く方法を学ぶことviは、上記のコマンドで参照を見つけるよりもはるかに簡単です。


はるかに簡単です。あるファイルにすでに行があり、別のファイルの特定の場所に挿入したい場合は、いくつか調整できます。ex私が書いたコードただします。

関連情報