bash - 我怎样才能从变量中发出回显处理颜色命令?

标签 bash colors echo

我正在编写一个需要颜色输出的 bash 脚本。我有一个文本文件,当它打印到屏幕上时需要像这样格式化:

>Barry's Whiskey Glass Drink Cup, XL 10 oz Dri...        $0.75
example.org/product-page.php?id=1228741

>Cotton Bath Towel Pool Towel Brown - Easy Car...        $6.11  
example.org/product-page.php?id=1228763

>Cotton Bath Towel Pool Towel Red - Easy Care ...        $6.11     
example.org/product-page.php?id=1228766

>Mosiso MacBook Case for iPad Pro 12.9/MacBook...        $1.95  
example.org/product-page.php?id=1228850

“>.....”文本需要一种颜色,“$...”另一种颜色,“example.org....”浅灰色。我试过这个:

  tac newlist.txt | sed 's/ >/\r\n   >/' > bwtext.txt

  sed -i 's/>/>\\033\[0;34m/g' bwtext.txt
  sed -i 's/\$/\$\\033\[0;33m/g' bwtext.txt
  sed -i 's/http/\\033\[0;37mhttp/g' bwtext.txt

  while read line
     do
        echo -e "${line}"
     done < bwtext.txt

这会将正确的转义码插入到文件中,但是当逐行回显时,它不会处理代码,而是按字面打印它们。

>033[0;34mFor Fitbit Alta Accessory Band, Silicone Repl...        $033[0;33m1.97      
033[0;37mexample.org/product-page.php?id=1247364

>033[0;34mTattify Gradient Nail Wraps - Love Like a Sun...        $033[0;33m0.99      
033[0;37mexample.org/product-page.php?id=1247367

>033[0;34mEA AromaCare Eucalyptus Essential Oil 120ml/4...        $033[0;33m3.00      
033[0;37mexample.org/product-page.php?id=1247370

... waiting 10 minutes for next update ...

我做错了什么,或者我怎样才能做对?谢谢。

最佳答案

您在文件中有正确的转义序列,但在您的 while 循环中未读取这些序列。尝试在阅读时添加原始输入标志 (-r),这不会解释转义序列并为您提供所需的格式。

while read -r line
do
echo -e "${line}"
done < bwtext.txt

关于bash - 我怎样才能从变量中发出回显处理颜色命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37669164/

相关文章:

ruby - 为目录中的所有文件(递归地)创建符号链接(symbolic link)到其他目录

linux - 使用字符串将 Bash Shell 脚本输出保存到文件中

linux - 在 *nix shell 中更容易导航

bash - 如何在 Shell 命令中交换参数

visual-studio-2010 - 在 Visual Studio 2010 IDE 中更改深蓝色背景

bash - 如何在 Bash 中重复一个字符?

php - 在不使用 ' ' 或 ""的情况下初始化 PHP echo?

javascript - jQuery .animate() 无法正常工作

安卓颜色转换问题

bash - 如何在 Bash 中对齐表格的列?