Bash

在最後一個空格後查找和替換模式

  • October 8, 2020

我需要在最後一個空格之後替換任何匹配的模式。我有一個 ssh 證書文件,例如:

ssh-rsa-cert-v01@openssh.com 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. 我想找到它並用另一個字元串替換。

如何查找和替換從最後一個空格開始的所有內容?與sedawk或其他任何東西……

提前致謝。

你可以試試

sed -E 's/(^.*) [^ ]+$/\1 replacement_text/' file.txt

這將匹配

  • “從行首開始的任何內容”(^.*模式,放置在“擷取組”中( ... )),
  • 然後是一個空間,
  • 然後是“直到行尾的除空格 ( ) 之外的任何內容”(後面的意思是“一個或多個這樣的字元”,而是表示“行尾”的錨點),[^ ]``+``[...]``$

並用您的替換文本替換後半部分。由於擷取組,前一部分被“自己”替換\1

引用自:https://unix.stackexchange.com/questions/613489