我有一个包含三段文字的文本文件。我想使用bash脚本命令以不同颜色显示不同的段落。第一段显示为红色,第二段显示为蓝色,第三段显示为青色。
我已经成功使用类似以下命令来以颜色显示行:
echo -e '\E[32;47m Green.'; tput sgr0
然而,我想解析我的文件并在有新段落时更改颜色。我希望能得到一些提示。
输入的路径为 /tmp/FILE
:http://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
输出结果:
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
的命令获取以下输出:tricolor() {
awk -f 3-para.awk $1; tput sgr0
}
可以通过以下方式使用该功能(例如):tricolor 3-para.data