Home > Blockchain >  Replace an element in a string of csv bash
Replace an element in a string of csv bash

Time:09-30

Working on a bash script. I'm reading a line from a properties file using grep and cut and have fetched some value in a variable role_portions something like this role_portions=role_1:10,role_2:25,role_3:75,role_4:50,role_5:75,role_6:25,role_7:50

Now, I get a few roles as csv input parameter in my bash script and I would want to change those roles values to 0. For example, when I run modify_script.sh role_2,role_4,role_7, after reading the above value from the file, the script should provide as output role_1:10,role_2:0,role_3:75,role_4:0,role_5:75,role_6:25,role_7:0. Can someone help with this?

CodePudding user response:

When the role names are without special characters (like & and /) you can use sed.

for role in role_2 role_4 role_7; do
  role_portions=$(sed -r "s/(^|,)(${role}):[^,]*/\1\2:0/" <<< "${role_portions}")
done

When you are already using grep and cut you might be able to combine commands (maybe use awk).

  •  Tags:  
  • bash
  • Related