Bash脚本打印带颜色的文本文件

3

我有一个包含三段文字的文本文件。我想使用bash脚本命令以不同颜色显示不同的段落。第一段显示为红色,第二段显示为蓝色,第三段显示为青色。

我已经成功使用类似以下命令来以颜色显示行:

echo -e '\E[32;47m Green.'; tput sgr0

然而,我想解析我的文件并在有新段落时更改颜色。我希望能得到一些提示。

2个回答

5

输入的路径为 /tmp/FILEhttp://pastie.org/4928415

脚本内容为:

#!/bin/bash

c=1
tput setaf $c
while read a; do
    [[ $a =~ ^$ ]] && tput setaf $((++c))
    echo "$a"
done < /tmp/FILE
tput sgr0

输出结果

在此输入图片描述


你只需要稍微修改一下就可以显示想要的颜色。 - Gilles Quénot
非常感谢!我是否也可以将这个带彩色的输出转换为PDF文件,而颜色仍然保持不变。再次感谢! - The Coder

4
这里是一个awk解决方案,它依次使用颜色设置数组的元素。
BEGIN { nc = split("\33[31;47m \33[34;43m \33[36;40m", colors, " ");
        c=1; print colors[c] }
{ print }
/^$/ { c = 1+(c%nc); print colors[c]}
< p >[编辑:上述代码在段落之间添加了一个额外的空行。更正后的代码如下:

BEGIN { nc = split("\33[31;47m \33[34;43m \33[36;40m", colors, " ");
        c=1; printf "%s", colors[c] }
/^$/ { c = 1+(c%nc); print colors[c]}
!/^$/
!/^$/会导致任何非空行按原样打印。(编辑结束)如果上述内容在文件3-para.awk中,数据在文件3-para.data中,请使用类似awk -f 3-para.awk 3-para.data的命令获取以下输出:screenshot of script output为了更加方便地使用,定义一个函数来调用脚本,然后将颜色重置为默认值:
tricolor() {
   awk -f 3-para.awk $1; tput sgr0
}

可以通过以下方式使用该功能(例如):tricolor 3-para.data


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接