다음 텍스트가 있습니다.
client_encryption_options:
enabled: true
# If enabled and optional is set to true encrypted and unencrypted connections are handled.
optional: false
keystore: conf/.keystore
keystore_password: cassandra
sed 명령을 사용하여 client_encryption_options 아래의 키 저장소 값을 변경하려고 합니다.
sed "/^client_encryption_options:/,+1s/keystore:.*/keystore: \/opt\/test/" $CASSANDRA_YAML_FILE > cassandra.yaml.tmp && mv cassandra.yaml.tmp $CASSANDRA_YAML_FILE
위 명령을 시도하면 conf/.keystore가 다음으로 대체되지 않습니다./opt/test/
답변1
아니요, 그렇지 않습니다.
당신은 내 솔루션을 사용하고 있습니다이전 질문. 질문은 구체적으로 다음 행의 값을 바꾸는 방법을 묻습니다. 이 질문에는 네 줄을 수정해야 합니다.
+1
로 변경하면 +4
문제가 해결될 수도 있습니다.
답변2
sed -e '
/^client_encryption_options:/,/keystore:/!b
//!b
s|\(keystore:\).*|\1 /opt/test|
' < $CASSANDRA_YAML_FILE > cassandra.yaml.tmp && \
mv cassandra.yaml.tmp "$CASSANDRA_YAML_FILE"
"sed"가 이를 지원하는 경우 "-i"(제자리에서 편집) 옵션을 사용하여 "mv"를 제거할 수도 있습니다.
sed -i.BAK -e 'your edit commands here' $_YOUR_YAML_FILE # Note: NO redirections here