파일에서 문자열을 검색하고 바꾸는 데 도움이 필요합니다.
내 파일 내용
hostssl all all 192.168.10.1/16 pam pamservice=postgresql clientcert= 1
hostssl all all 192.168.10.2/16 pam pamservice=postgresql clientcert=1
hostssl all all 192.168.10.3/16 pam pamservice=postgresql clientcert= 1
hostssl all all 192.168.10.4/16 pam pamservice=postgresql clientcert= 1
hostssl all all 192.168.20.1/16 pam pamservice=postgresql clientcert=1
hostssl all all 192.168.20.2/16 pam pamservice=postgresql clientcert=1
hostssl all all 192.168.20.3/16 pam pamservice=postgresql clientcert=1
hostssl all all 192.168.10.5/16 pam pamservice=postgresql clientcert=1
hostssl all all 192.168.10.6/16 pam pamservice=postgresql clientcert=1
hostssl all all 192.168.10.7/16 pam pamservice=postgresql clientcert= 1
다음 명령을 사용해 보았습니다.
sed -i "s/clientcert=*1/clientcert=verify-full/g" pg_hba.conf
그 효과는 예상한 결과가 아닙니다.
hostssl all all 192.168.10.1/16 pam pamservice=postgresql **clientcert= 1**
hostssl all all 192.168.10.2/16 pam pamservice=postgresql clientcert=verify-full
hostssl all all 192.168.10.3/16 pam pamservice=postgresql **clientcert= 1**
hostssl all all 192.168.10.4/16 pam pamservice=postgresql **clientcert= 1**
hostssl all all 192.168.20.1/16 pam pamservice=postgresql clientcert=verify-full
hostssl all all 192.168.20.2/16 pam pamservice=postgresql clientcert=verify-full
hostssl all all 192.168.20.3/16 pam pamservice=postgresql clientcert=verify-full
hostssl all all 192.168.10.5/16 pam pamservice=postgresql clientcert=verify-full
hostssl all all 192.168.10.6/16 pam pamservice=postgresql clientcert=verify-full
hostssl all all 192.168.10.7/16 pam pamservice=postgresql clientcert= 1
"="와 1" 사이의 공백을 무시하여 "clientcert=1"을 "clientcert=verify-full"로 바꾸는 가장 좋은 대안을 알려주십시오.
답변1
나는 답을 찾았다. 다음 코드는 나를 위해 일했습니다
sed -i "s/clientcert=[[:space:]]*1/clientcert=verify-full/g" pg_hba.conf