I have a line of text like:
value,value,,,value,value
I want the two empty values to be replaced with a different value. Something like:
value,value,hello,hello,value,value
I'm currently trying something like:
sed -e 's/^,/hello,/' -e 's/,$/,hello/' -e 's/,,/,hello,/g'
That catches blank values at the beginning, end and the middle. BUT, it doesn't catch two consecutive blank values in a row. How can I update the regular expression patterns so that an indefinite number of consecutive blank values can appear in the middle?
What about this perl one-liner:
echo ',value,,,value,' | perl -pe 's/^(?=,)|(?<=,)(?=,|$)/hello/g'
# hello,value,hello,hello,value,hello
I don't think you can do it with a single substitute command, since Sed only replaces non-overlapped occurrences of your pattern. This ugly hack could work, but requires you to prevent one more character (I choosed ';') in your values :
$ echo 'value,value,,,value,value' | sed -r 's/,/,;/g;s/(^|;)(,|$)/\1hello\2/g;s/,;/,/g'
value,value,hello,hello,value,value
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With