GNU SEDを使用して行にコメントを付け、新しい行を追加します。

GNU SEDを使用して行にコメントを付け、新しい行を追加します。

SSH設定を保護するために、RHEL 7で/etc/ssh/sshd_configファイルを編集するとします。

交換したいです。 Ciphers行を例としてそのままにしてコメントアウトしてみましょう。また、Red Hatがrpmを更新したりisoをインストールしたりするたびに文字列が壊れるのを防ぐために、文字列の最小部分をオフにしたいと思います。

Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

する必要があります...

#Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Ciphers abc-123,def-456,ghi-789 etc...

ファイル名がtestfileで内容がThis is my test fileのテストファイルで改行文字を検索または追加しようとしています。 「いいえ、新しい行ではありません」と追加しようとしましたが、厄介に失敗しました。

sed -i '/This is my test file./aNo it's not.' testfile

どうすればいいのか、さらに重要なのは、その背後に隠れた重要な概念は何ですか?

答え1

以下のsedコマンドを試してみましたが、完璧に動作します。

注文する

sed -i '/^Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-c/s/.*/#&\nCiphers abc-123,def-456,ghi-789/g' filename

出力

#Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Ciphers abc-123,def-456,ghi-789

答え2

sed -i -n 'p; s/^Ciphers/#&/p' /etc/ssh/sshd_config

-i所定の位置に

-n明示的に印刷されない限り、何も印刷しない

/p検索文字列の最後に強制的に印刷して、一致する-n文字列を効果的に上書きします。

関連情報