2

鉴于以下情况:

text="The quick $color fox jumps over the $adjective dog"

如何在 bash 中与值相呼应,但不更改$text变量$color$adjective

例子:

$ echo -e --highlight-variables $text
The quick \e[00;31mbrown\e[00m fox jumps over the \e[00;31mlazy\e[00m dog

(实际颜色除外)

但是之后:

$ echo -e $text
The quick brown fox jumps over the lazy dog

不会有颜色变化。

我希望能够输出文本,less以便用户可以在控制台中查看它,然后将变量写入文件,但文件中不应包含颜色信息。我正在执行的实际代码如下所示:

echo -e $text | less
echo "Is this acceptable?"
read accept
if [ "$accept" == "y" ]
  then
  echo -e $text > output.txt
fi

如果我用颜色包装变量,则转义文本将放入文件中。

4

1 回答 1

1

您只需要在打印之前删除 ansi 序列。

nocolor()
{
perl -pe "s/\e\[\d+(?>(;\d+)*)m//g;"
}

echo -e $text | less
echo "Is this acceptable?"
read accept
if [ "$accept" == "y" ]
  then
  echo -e $text | nocolor > output.txt
fi
于 2012-06-28T16:38:04.730 回答