【发布时间】:2021-12-04 18:56:51
【问题描述】:
我有一个像这样的文件(file.txt):
Yes
Yes
No
No
我想将此文件输出到 bash 终端,其中“是”为绿色,“否”为红色。我编写了以下脚本:
RED='\033[0;31m'
NC='\033[0m'
GREEN='\033[0;32m'
cat file.txt | sed 's/No/${RED}No${NC}/g' | sed 's/Yes/${GREEN}Yes${NC}/g' > color_file.txt
printf "$(cat color_file.txt)"
输出如下:
${GREEN}Yes${NC}
${GREEN}Yes${NC}
${RED}No${NC}
${RED}No${NC}
而不是被着色。
如果我有这样的脚本,着色工作:
RED='\033[0;31m'
printf "${RED}No${NC}"
如何读取文件,为其内容着色,然后打印到终端?
【问题讨论】:
-
我不明白你在这里的意思。据我所知,我的报价不是问题(我可能错了,但我还很新)。问题是我不确定如何让
printf读取文件的内容并因此执行其中的命令。 -
As far as I can tell my quotes are not the issue您的报价是问题所在。'与"不同。研究它们之间的区别。此外,\033(4 个字符,\033)对于printf是特殊的,但对于sed则不是。printf "$(cat color_file.txt)"你为什么要printf $(..)?用 shellcheck 检查你的脚本。
标签: bash ansi-colors