是否可以在不使用 echo 的情况下更改输出颜色? 类似于“将颜色设置为黄色”。
我有一个脚本
#!/bin/bash
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo -e ${YELLOW}
cat file.txt | awk 'NR==1 { print $0; }'
echo -e ${BLUE}
cat file.txt | awk 'NR==2 { print $0; }'
echo -e ${NC}
以黄色打印 file.txt 的第一行,以蓝色打印第二行。但它还在我有“echo”命令的地方添加了额外的行。
我试过这样的:
#!/bin/bash
YELLOW='\033[0;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
${YELLOW} cat file.txt | awk 'NR==1 { print $0; }'
${BLUE} cat file.txt | awk 'NR==2 { print $0; }' ${NC}
但是它不起作用,因为“echo”命令需要-e 参数来显示颜色。
所以我的问题是:我可以在不使用 echo 的情况下更改输出颜色吗?如果没有,如何删除文件行之间的这些额外行?是否可以更正此脚本以不生成额外的行?
当前输出:
first line of file.txt second line of file.txt
理想的输出:
first line of file.txt second line of file.txt
最佳答案
使用 printf
。
printf '\e[1;34m%-6s\e[m' "First line of text in BLUE"
printf '\e[1;31m%-6s\n\e[m' "Second line of text in RED WITH A NEW LINE"
这是一个很小的 bash
函数来执行此操作:
$ cat col.sh
#!/bin/bash
colprint()
{
printf '\e[1;%dm%-6s\n\e[m' "$1" "$2"
}
# For your input file.
colprint 31 "$(awk 'NR==1{print;}' file.txt)"
colprint 34 "$(awk 'NR==2{print;}' file.txt)"
colprint 33 "$(awk 'NR==3{print;}' file.txt)"
当然在带有颜色的 xterm
上以颜色输出。
关于linux - 如何在不使用 echo 的情况下更改输出颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48324279/