0

I need to use a string variable in a sed command. My attempt is given in script.sh, it does not do what I want, I assume because my variable contains characters that I need sed to evaluate. I am working in linux bash.

input.txt

delicious.banana
gross.apple

script.sh

adjectives="delicious\|gross\|bearable\|yummy"
sed "s/\($adjectives\)\.//g" input.txt > output.txt

output.txt desired

banana
apple

output.txt current

deliciousbanana
grossdapple
miken32
  • 42,008
  • 16
  • 111
  • 154

1 Answers1

2

Non-gnu sed don't work with \| in BRE (basic regex mode). I suggest using ERE (Extended regex mode) using -E and as a bonus you can eliminate all the escaping:

adjectives="delicious|gross|bearable|yummy"
sed -E "s/($adjectives)\.//g" input.txt

banana
apple
anubhava
  • 761,203
  • 64
  • 569
  • 643