CSVファイル(ロボットの一部のログ出力)に対する変更を監視/追跡したいと思います。<TAB>
区切り文字とヘッダー情報を含む最初の行を含む大容量ファイル。
これまで使用していた出力は列tail - f <file.csv>
形式ではなく、次のようになります。
yAccelRaw zAccelRaw xGyroRaw ... ... ...
3 256 1 ... ... ...
4 255 3 ... ... ...
4 255 -6 ... ... ...
3 253 -1 ... ... ...
4 254 2 ... ... ...
5 255 0 ... ... ...
4 255 3 ... ... ...
5 254 3 ... ... ...
5 253 -1 ... ... ...
4 255 3 ... ... ...
30を超える列を含むCSVの場合、どの値がどの列に属するかを知ることは容易ではありません。一つでもあるのだろうか?一般的な出力を表形式で印刷するソリューションは何ですか?
これまでは特定の列を切り取り、その結果を見ることに慣れていましたが、tail -f <file.csv> | cut -f5,6
全体の概要を好みます。また、column
更新されていない結果を渡してみました。
答え1
たとえば、次のようにawkを使用して最初の行のヘッダーをキャプチャし、10行ごとに繰り返し、列サイズを減らして最大5文字を指定できます。
tail -n +1 -f file.csv |
awk 'NR==1 { n=split($0,hdr) }
NR%10==1 { for(i=1;i<=n;i++)printf "%5.5s ",hdr[i];printf "\n" }
{ for(i=1;i<=n;i++)printf "%5.5s ",$i;printf "\n" }
'
これは次のようなものを与えるでしょう
yAcce zAcce xGyro ...
3 256 1 ...
4 255 3 ...
4 255 -6 ...
3 253 -1 ...
4 254 2 ...
5 255 0 ...
4 255 3 ...
5 254 3 ...
5 253 -1 ...
4 255 3 ...
yAcce zAcce xGyro ...
3 256 1 ...
...
幅が端末に収まらないほど広すぎる場合は、結果をパイプで接続して同様に機能させることless -S +F
ができますが、tail -f
Control-Cを使用して尾を一時停止すると、矢印を使用して左右にスクロールできます。続けて追跡してくださいF
。
答え2
列はあなたが望むものを正確に行います。パラメータを使用して、タブを区切り文字として識別できます。熱にパイプするオプションがないのはなぜですか?cat <file.csv> | column -s "\t"