【问题标题】:Bash script to print a text file in colorBash脚本以彩色打印文本文件
【发布时间】:2012-09-28 01:44:00
【问题描述】:

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

我设法使用诸如

之类的命令以彩色显示线条
echo -e '\E[32;47m Green.'; tput sgr0

但是,我想解析我的文件并在有新段落时更改颜色。我会很感激一些提示。

【问题讨论】:

    标签: bash text colors sed


    【解决方案1】:

    输入/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
    

    输出

    【讨论】:

    • 你只需要稍微修改一下就可以显示想要的颜色。
    • 非常感谢!我也可以将此彩色输出转换为保持颜色不变的 pdf 文件吗?再次感谢您!
    【解决方案2】:

    这是一个 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]}
    

    [编辑:上面错误地在段落之间添加了一个额外的空白行。更正后的代码如下:

    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 的命令来获取如下输出。

    为了更方便使用,定义一个调用脚本然后将颜色重置为默认值的函数:

    tricolor() {
       awk -f 3-para.awk $1; tput sgr0
    }
    

    通过(例如)tricolor 3-para.data 使用该功能

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2021-05-12
      • 1970-01-01
      • 2021-12-04
      • 2016-03-16
      • 1970-01-01
      相关资源
      最近更新 更多