I am new to bash, dragged into a problem where I need to update some dynamic parameters in a yaml file
Based on query (search4.subsearch1.name), i need to update
name: old_name
into
name: new_name
- Here is the sample file:
search1: name: name1 pass: pass1 date: date1 #these are just commented texts search2: #Adding few more commented lines myname: somename name: name2 pass: pass2 someotherparam: param1 search3: nameAndSurname: NS namingConv: true varSet: P3 search4: #Again adding some special name: strings here myname: somename1 name: new_name pass: new_pass ptherparam1: T3 subsearch1: #Again adding some special name strings here myname: somename2 name: old_name pass: pass2 ptherparam1: param3 search5: #Again adding some special name strings here var1: value1 name: some_name pass: some_pass
So based on query (search4.subsearch1.name), I need to update name: old_name into name: new_name
- Expeced output:
search4: #Again adding some special name: strings here myname: somename1 name: new_name pass: new_pass ptherparam1: T3 subsearch1: #Again adding some special name strings here myname: somename2 name: new_name pass: pass2 ptherparam1: param3
Tried with awk and sed but that did not work:
lineNR=$(awk "/\<search4:/{f=1} f && /\<name:/ {print NR; exit}" testfile.txt);sed "${lineNR}s/name.*/name: new_name/" testfile.txt