Bash
在最後一個空格後查找和替換模式
我需要在最後一個空格之後替換任何匹配的模式。我有一個 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
. 我想找到它並用另一個字元串替換。如何查找和替換從最後一個空格開始的所有內容?與
sed
或awk
或其他任何東西……提前致謝。
你可以試試
sed -E 's/(^.*) [^ ]+$/\1 replacement_text/' file.txt
這將匹配
- “從行首開始的任何內容”(
^.*
模式,放置在“擷取組”中( ... )
),- 然後是一個空間,
- 然後是“直到行尾的除空格 ( ) 之外的任何內容”(後面的意思是“一個或多個這樣的字元”,而是表示“行尾”的錨點),
[^ ]``+``[...]``$
並用您的替換文本替換後半部分。由於擷取組,前一部分被“自己”替換
\1
。