How to read output of sed into a variable

Viewed 99997

I have variable which has value "abcd.txt".

I want to store everything before the ".txt" in a second variable, replacing the ".txt" with ".log"

I have no problem echoing the desired value:

a="abcd.txt"

echo $a | sed 's/.txt/.log/'

But how do I get the value "abcd.log" into the second variable?

4 Answers

The simplest way is

logfile="${a/\.txt/\.log}"

If it should be allowed that the filename in $a has more than one occurrence of .txt in it, use the following solution. Its more safe. It only changes the last occurrence of .txt

logfile="${a%%\.txt}.log"
Related