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

太字でテキストファイルの最初の行を印刷する簡単な方法はありますか?

私はそれがtputbashで使用できることを知っています。

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

ANSIエスケープを使用する別のsed解決策は、Stephen Harrisの正規表現を使用することです。

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

ANSIエスケープに使用される\x1b8進数の16進値はどこにありますか?\033

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

関連情報