テーブルの表示/形式でCSVファイルを変更/更新を監視/追跡

テーブルの表示/形式でCSVファイルを変更/更新を監視/追跡

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 -fControl-Cを使用して尾を一時停止すると、矢印を使用して左右にスクロールできます。続けて追跡してくださいF

おすすめ記事