sedまたはPerlを使用してファイルからこの文字列を削除するにはどうすればよいですか?

sedまたはPerlを使用してファイルからこの文字列を削除するにはどうすればよいですか?

この文字列を削除したいです。

no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="echo '\"root\" ユーザーの代わりに \"centos\" ユーザーとしてログインします。';echo;sleep 10"

以下のファイルから:

no-port-forwarding,no-agent-forwarding,no-X11-forwarding,command="echo' ユーザー \"root\" の代わりにユーザー \"centos\" としてログインしてください。';echo;sleep 10" ssh - rsaAAAAB3NzaC1yc2EAAAADAQABAAABAQCV9s E5qYk8MkH36xbBtcO6xeuncFr619pu +R/08jkYn9GIXlgPzD9THUpEI+m/OSp5nVPgIamiN7LudOSks6zwk 9番目のkxeSmW95KNEHW5h8Y8MoB0wXzGdr0yiV32nLmvyG18JU6

ベストアンサー1

ファイルはauthorized_keys通常SSHファイルです~/.ssh/authorized_keys。これには複数のフィールドがあり、削除するフィールドは最初のオプションの「オプション」フィールドです。

2番目のフィールドは "keytype"フィールドですが、マニュアルによると、このフィールドの値は、、、、のecdsa-sha2-nistp256いずれ かです。ecdsa-sha2-nistp384ecdsa-sha2-nistp521ssh-ed25519ssh-dssssh-rsasshd

この事実を利用してオプションフィールドを削除できます。

sed -E 's/^.* (ecdsa-sha2-(nistp384|nistp521)|ssh-(ed25519|dss|rsa))/\1/' ~/.ssh/authorized_keys >~/.ssh/authorized_keys.new &&
mv ~/.ssh/authorized_keys.new ~/.ssh/authorized_keys &&
chmod go-rwx ~/.ssh/authorized_keys

あるいは、sed -i ...Unixでこれが通常どのように機能するかを知っている場合は、次のようにファイルを変更できます(この-iフラグは機能します)少し)実装によって異なりますsed

editsedコマンドはs/^.* (ecdsa-sha2-(nistp384|nistp521)|ssh-(ed25519|dss|rsa))/\1/拡張正規表現と一致し、^.* (ecdsa-sha2-(nistp384|nistp521)|ssh-(ed25519|dss|rsa))一致するテキストをその行で見つかったキータイプに置き換えます。この式は、各入力行の先頭から有効なキータイプの1つを含むすべての項目に一致します。

おすすめ記事