最後のスペースの後に一致するパターンを置き換える必要があります。次のSSH証明書ファイルがあります。
[email protected] AAAAHHNzaC1yc2EtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgePsBdieYnkI6dvMLG5qAl+UnOXo8mV0JmthWTNZ7+REAAAADAQABAAABAQC0aFhFni8pfoRiwt5O1ZVU6G0Xb+iX3D+A7uEItzLAygf7V/Se6tUg3SlUWf85G4S5vceZzbzTXbNso+vCaYc+RA0xwaxDBDHomdJVzpK/TUL+lV63V51vhvaM2redU+fYDGuUHUbVjt0Y4qaHBr6R4Rh0GujbL6U+/eq1yQ52VGD34f1eldt56xvykP1HAfs158oDcCL1lnJ26SPMzN38X6RCl/vAZn8UmOntmpa2LVT+j8kf1lKAQdpGYGbwZybo8LCYL2lyv3LTw1slULZsoKnazuZOKoaTxEziJfvr79jS9sNctqxBMPkeTDxUuLdd3URpiCCfpRcmKH+owAz3AAAAAAAAAAAAAAACAAAAGHZtdHN0aWlxMS5jZWRlbGdyb3VwLmNvbQAAACkAAAAYdm10c3RpaXExLmNlZGVsZ3JvdXAuY29tAAAACXZtdHN0aWlxMQAAAABfaeD6AAAAAGFxvY= ssh_host_rsa_key.pub
ここで、私が持っているファイルの終わりにssh_host_rsa_key.pub
または/home/user/ssh_host_rsa_key.pub
。
最後のスペースから始めて、すべてを探して置き換える方法は?それと一緒にsed
、あるいはawk
他に何でも...
よろしくお願いします。
答え1
あなたは試すことができます
sed -E 's/(^.*) [^ ]+$/\1 replacement_text/' file.txt
これは一致
- 「行の先頭から始まるすべて」(
^.*
パターン、「キャプチャグループ」に配置されている( ... )
)、 - それではスペースがありますが、
- それから「何でもしかし、
[^ ]
行末までの空白()」(後者は「1つ以上の対応する文字」を+
意味し、「行の終わり」を表す基準点である)、[...]
$
後半を代替テキストに置き換えます。前の部分は、キャプチャグループのために「self」に置き換えられます\1
。
答え2
この方法は、行の先頭にスペースで区切られた2つのフィールドがある場合に機能します。 3番目のフィールドが存在しない可能性があります。
awk '{print $1 " " $2 " new text"}' < file
これは後で交換する予定です最後のスペース1行に何個のスペースがあるかに関係なく:
sed 's/ [^ ]*$/ new text/' < file