J'ai un fichier config.yaml que je veux éditer ou modifier en utilisant un script bash. J'ai donc obtenu une commande à l'aide de grep et sed qui me donne les modifications désirées, mais le problème est que lorsque j'applique sed, cela s'applique à tout le fichier, y compris la section que je veux éditer. Voici la section du fichier avant l'édition :
###############################################################################
29
30 # Manual provisioning configuration
31 # provisioning:
32 # source: "manual"
33 # device_connection_string: ""
34
35 # DPS TPM provisioning configuration
36 # provisioning:
37 # source: "dps"
38 # global_endpoint: "https://global.azure-devices-provisioning.net"
39 # scope_id: "{scope_id}"
40 # attestation:
41 # method: "tpm"
42 # registration_id: "{registration_id}"
44 # DPS symmetric key provisioning configuration
45 # provisioning:
46 # source: "dps"
47 # global_endpoint: "https://global.azure-devices-provisioning.net"
48 # scope_id: "{scope_id}"
49 # attestation:
50 # method: "symmetric_key"
51 # registration_id: "{registration_id}"
52 # symmetric_key: "{symmetric_key}"
53
54 ###############################################################################
Maintenant, je veux éditer de "# DPS TPM provisioning configuration" à "# registration_id: "{registration_id}"" à la ligne 42. J'utilise donc la commande suivante :
grep -Pzom 1 "# DPS TPM provisioning configuration(.|\n)*?(?=\n# DPS)" config.yaml | sed 's/^#[ \t]//' config.yaml
qui me donne la sortie suivante :
Configuration de provisioning manuelle
provisioning:
source: "manuelle"
device_connection_string: ""
Configuration de provisioning TPM DPS
provisioning:
source: "dps"
global_endpoint: "https://global.azure-devices-provisioning.net"
scope_id: "{scope_id}"
attestation:
method: "tpm"
registration_id: "{registration_id}"
Configuration de provisioning par clé symétrique DPS
provisioning:
source: "dps"
global_endpoint: "https://global.azure-devices-provisioning.net"
scope_id: "{scope_id}"
attestation:
method: "symmetric_key"
registration_id: "{registration_id}"
symmetric_key: "{symmetric_key}"
###############################################################################
Cela modifie la partie requise mais en plus de cela, tout le fichier également. Je veux juste appliquer sed à la sortie grep du fichier uniquement et pas à l'ensemble du fichier. Quelqu'un peut-il aider avec la commande s'il vous plaît!