Bash - 打印文本文件(csv)的第一行粗体

Bash - 打印文本文件(csv)的第一行粗体

我有一个像这样的文本(csv)文件:

Date:;Time:;Value:;
20181202;112044;38274658392;
20181207;121356;94843726283;
20181221;221012;93938272189;
20181230;071234;93736473783;
20190107;011022;27339393022;
20190112;042346;84739298321;

我用来column -s';' -t file获得格式良好的输出:

Date:     Time:   Value:
20181202  112044  38274658392
20181207  121356  94843726283
20181221  221012  93938272189
20181230  071234  93736473783
20190107  011022  27339393022
20190112  042346  84739298321

有没有一种简单的方法可以用粗体字母打印文本文件的第一行?

我知道可以tput与 bash 一起使用:

bold=$(tput bold)
reset=$(tput sgr0)

如何将其添加到第一行的开头和结尾?我sed此刻正在想...

答案1

我想你可以用awk这个:

column -s\; -t file | awk -v bld=$(tput bold) -v rst=$(tput sgr0) 'NR == 1{$0 = bld$0rst} 1'

这将使列输出的第一行变为粗体

答案2

另一个使用sedANSI 转义的解决方案是使用 Stephen Harris 的正则表达式:

<file sed "1s/\(.*\)/\x1b[1m\1\x1b[0m/" | column -s\; -t

其中是ANSI 转义中使用的\x1b八进制的十六进制值,例如\033

printf '\033[1m%s\033[0m\n' hello
# or
printf '\x1b[1m%s\x1b[0m\n' world

相关内容