I have a scenario where I echo
multiple lines and pipe
them to a translator, like this:
echo -n '
$error This is an error$defaults
$fatal THIS IS FATAL ERROR$defaults
This is normal text
' | translate ansi
echo -n '
$error This is an error$defaults
$fatal THIS IS FATAL ERROR$defaults
This is normal text
' | translate html
I first used sed
to replace ansi
with html
codes, but due to the obvious speed issues, I would like to do something like this:
input="$(cat)"
if [ "$1" == ansi ]
then
error="[1m[31m"
fatal="[0m[30m[41m"
defaults="[0m"
elif [ "$1" == html ]
then
error='<span class="error">'
fatal='<span class="fatal">'
defaults='</span>'
fi
eval "echo "$input""
But the output is in a single line. I experimented with ${}
and cat <<
tricks, but none of the experiments gave me the desired output.
but why not directly a sed (here using your variable name and content by substitution