마지막 공백 뒤의 패턴 찾기 및 바꾸기

마지막 공백 뒤의 패턴 찾기 및 바꾸기

마지막 공백 이후에 일치하는 패턴을 바꿔야 합니다. 다음과 같은 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

이것은 일치합니다

  • "줄의 시작 부분부터 시작하는 모든 것"( ^.*패턴, "캡처 그룹"에 배치됨 ( ... )),
  • 그러면 공간이 있는데,
  • 그러다가 "아무거나하지만[^ ]줄 끝까지의 공백( )"(후자는 "하나 이상의 해당 문자"를 +의미하며 "줄의 끝"을 나타내는 기준점임),[...]$

뒷부분을 대체 텍스트로 바꾸세요. 이전 부분은 캡처링 그룹으로 인해 "self"로 대체됩니다 \1.

답변2

이 방법은 줄 시작 부분에 공백으로 구분된 두 개의 필드가 있는 경우에 작동합니다. 세 번째 필드가 존재하지 않을 수 있습니다.

awk '{print $1 " " $2 " new text"}' < file

이건 나중에 교체할 ​​예정마지막 공간한 줄에 몇 개의 공백이 있는지에 관계없이:

sed 's/ [^ ]*$/ new text/' < file

관련 정보