なんてこった。CSVの各列に色をつけられるらしい。ANSIエスケープシーケンスを使えば可能なようだ。
こうなる。
超わかりやすい。
ソースはこれ。
今後やること
・csvファイル名(ebooks.csv)はソース内に固定で書いちゃってるけど、引数で取れるように改良する。
・その際、csvの列数を数えて、各列ごとに違う色に(自動で)なるようにする。
コピペ用
#!/bin/bash
# http://192.168.3.11:5000/PT3/第43回シェル芸勉強会(LT)-9KewBG30f6I.mp4
#区切り文字を改行のみに変更
IFS=$'\n'
for i in $(cat ebooks.csv)
do
echo "$i" | sed -E 's/([^,]+),([^,]+),([^,]+),([^,]+),([^,]+)/\x1b[31m\1,\x1b[32m\2,\x1b[33m\3,\x1b[34m\4,\x1b[35m\5\x1b[m/g'
# echo "$i" | sed -E 's/([^,]+),([^,]+),([^,]+),([^,]+),([^,]+)/\x1b[31m\1,\x1b[32m\2,\x1b[33m\3,\x1b[34m\4,\x1b[35m\5\x1b[m/g'
done
# cat ebooks.csv | sed -E 's/([~,]+),([~,]+),([~,]+),([~,]+),([~,]+)/\x1b[31m\1,\x1b[41m\2,\x1b[51m\3,\x1b[61m\4,\x1b[71m\5\x1b[m/g'
#区切り文字を元に戻す
IFS="$'\n'$'\t' "
なお、IFSを一時的に変更しているのは、スペースを区切り文字として見ないようにするため。
ヒントはこれ。
この「シェル芸勉強会」って何なの。凄すぎ。天才ばっかじゃないか。