ファイルから文字列を検索して置換するのに役立ちます。
私のファイルの内容
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