GNU SED를 사용하여 줄에 주석을 달고 새 줄을 추가합니다.

GNU SED를 사용하여 줄에 주석을 달고 새 줄을 추가합니다.

SSH 구성을 보호하기 위해 RHEL 7에서 /etc/ssh/sshd_config 파일을 편집한다고 가정해 보겠습니다.

예를 들어 Ciphers 줄을 교체하고 원본을 제자리에 유지하고 주석을 달겠습니다. 또한 Red Hat이 rpm/install iso를 업데이트할 때마다 문자열이 깨지는 것을 방지하기 위해 가능한 한 문자열의 가장 작은 부분을 차단할 수 있기를 원합니다.

Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc

되어야 한다...

#Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Ciphers abc-123,def-456,ghi-789 etc...

파일 이름이 testfile이고 내용이 다음과 같은 테스트 파일에서 개행 찾기/추가를 시도했습니다. 이것은 내 테스트 파일입니다. 아니요, 새 줄이 아니기 때문에 추가하려고 시도했지만 비참하게 실패했습니다.

sed -i '/This is my test file./aNo it's not.' testfile

이에 대해 어떻게 생각하고 더 중요한 것은 그 뒤에 숨은 핵심 개념은 무엇입니까?

답변1

나는 아래 sed 명령을 사용해 보았고 매력적으로 작동했습니다.

명령

sed -i '/^Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-c/s/.*/#&\nCiphers abc-123,def-456,ghi-789/g' filename

산출

#Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
Ciphers abc-123,def-456,ghi-789

답변2

sed -i -n 'p; s/^Ciphers/#&/p' /etc/ssh/sshd_config

-i제자리에

-n명시적으로 인쇄되지 않는 한 아무것도 인쇄하지 않습니다.

/p검색 문자열의 끝에서 인쇄를 강제하여 -n일치하는 문자열을 효과적으로 재정의합니다.

관련 정보