sed - 新しい行を追加し、未定義の文字を置き換えずにEOF

sed - 新しい行を追加し、未定義の文字を置き換えずにEOF

sedコマンドを使用すると奇妙な動作が発生します(この場合はawkではなくsedでなければなりません)。誰かが私が間違っていることを説明できることを願って、2つの質問があります。

  • 次の行を使用して、/etc/sudoersにコメントと2つのコマンドを追加したいと思います。

    sed -i -e '$a\# Provide apache user permissions to run the ban_ip.sh script as part of mod_evasive\n\apache ALL=NOPASSWD: /usr/local/bin/scripts-tecmint/ban_ip.sh\n\Defaults:apache !requiretty' /etc/sudoers
    

    ここで奇妙なことが起こっています。

    • 最初の行(コメント)は、空行を作成せずにファイルの末尾に直接追加されます(修正をリンクしたい「デザインアイテム」のみ)。
    • 生成された2番目の行は、次から始まります。^その波変えるApache

Q:
1. sed one-linerを使用してファイルの末尾に空白行を追加し、空白行の後にテキストを挿入するにはどうすればよいですか?
2.私が欲しいテキストを追加するためにsedを取得するには、1行で何を修正する必要がありますか? (2行目は次から始まります。Apacheまさか^その波

ご意見ありがとうございました。

ベストアンサー1

なぜなら、この\a役割はCtrl+G- 後でこの役割から抜け出す必要がないからです。\n

メンテナンスのために少し1行にして、実際の改行を使用してコマンドを続行することをお勧めしますa。また、希望の空行もアクティブになります。

sed -i -e '$a\
\
# Provide apache user permissions to run the ban_ip.sh script as part of mod_evasive\
apache ALL=NOPASSWD: /usr/local/bin/scripts-tecmint/ban_ip.sh\
Defaults:apache !requiretty' /etc/sudoers

おすすめ記事