Text-Processing

Bash - 列印文本文件(csv)的第一行粗體

  • May 11, 2019

我有一個像這樣的文本(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此刻在想…

我想你可以用awk這個:

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

這將使列輸出的第一行變為粗體

另一個使用sed和 ANSI 轉義的解決方案使用 Stephen Harris 的正則表達式:

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

其中\x1b是八進制的十六進制值,\033用於 ANSI 轉義,如

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

引用自:https://unix.stackexchange.com/questions/518426