以可读格式转换列和行

时间:2013-03-21 07:34:48

标签: regex shell

我有一个文件,其条目如下:

  

时间;实例;数据库;状态; SHEAPTHRES; bp_heap; fcm_heap; other_heap;会议; sessions_in_exec; locks_held; lock_escal; log_reads; log_writes;死锁; l_reads; p_reads; hit_ratio; pct_async_reads; d_writes; a_writes; lock_waiting;排序堆; sort_overflows ; pct_sort_overflows; AvgPoolReadTime; AvgDirReadTime; AvgPoolWriteTime; AvgDirWriteTim

02:07:49; SAN33;样品;活动; 0; 10688; 832; 72064; 8; 0; 0%; 0; 0; 0; 0; 0; 0; 0%0%0; 0; 0; 0; 0; 0%; 0; 0; 0; 0 02:08:09; SAN33;样品;活动; 0; 10688; 832; 72064; 8; 0; 0%; 0; 0; 0; 0; 0; 0; 0%; 0%; 0; 0; 0 ; 0; 0; 0%; 0; 0; 0; 0 02:08:29; SAN33;样品;活动; 0; 10688; 832; 72064; 8; 0; 0%; 0; 0; 0; 0; 0; 0; 0%; 0%; 0; 0; 0 ; 0; 0; 0%; 0; 0; 0; 0

并希望以可读格式转换它,如:

Time           Instance        Database
02:07:49        SAN33       SAMPLE
02:08:09        SAN33       SAMPLE
02:08:29        SAN33       SAMPLE 

  and so on..

我试过tr -s ";" "\t"但没有得到任何好结果。任何人都可以帮助我。

2 个答案:

答案 0 :(得分:2)

您可能希望使用column,如下所示:

column -s\; -t your_file

其中-s\;表示您的列分隔符是分号(使用反斜杠保护以避免shell解释)。另请参阅Command line CSV viewer?

答案 1 :(得分:0)

如何更多unix感知变体:

cat <your file> | sed 's/;/\t/g'

Solaris HP-UX 用户注意:而不是\t字符输入,请使用Ctrl+V然后TAB键序列。