複数スペースが区切り文字となっているファイルをCSVに変換する †各種コマンドを実行するとスペースで整形された情報がターミナルに表示されます。 trコマンドによるCSV変換 †タイトルにはファイルと記述してありますが、もちろん標準入出力を使った変換もできます。 tr -s ' ' ','
man trをして-sのオプションの意味を貼りつけておきます。 -s, --squeeze-repeats 同じ文字の繰り返しを 1 文字に置き換える。この操作は変換や削除のあとに行われる。 SET1 にある文字の繰り 返しを、その文字 1 文字に置き換える。 TSV(タブ区切り)に変更する方法) †カンマだったところを\tにするだけです。 tr -s ' ' '\t' $ ls -l /etc/init.d/ | tr -s ' ' '\t' 合計 564 -rwxr-xr-x 1 root root 1897 7月 22 12:35 NetworkManager -rwxr-xr-x 1 root root 1566 1月 8 2010 acpid -rwxr-xr-x 1 root root 1441 3月 28 2007 anacron -rwxr-xr-x 1 root root 1429 3月 14 2007 apmd -rwxr-xr-x 1 root root 1284 1月 27 2010 atd -rwxr-xr-x 1 root root 3328 3月 6 2011 auditd <snip> 当方がよく使う場面 †複数スペースが続き区切り文字になっている情報としてsarなどの出力があります。 sarの出力をCSVにする †以下のコマンドを実行してシステム情報を取得します。 sar -A -o sysinfo.dat 1 10 (1秒おき計10回全ての情報を取得しsysinfo.datファイルに取得データを出力します。) sarコマンドにより出力されたファイルを利用しCPU利用状況を取得します。 $ LANG=C sar -u -f sysinfo.dat Linux 2.6.18-274.12.1.el5 (centos) 12/28/11 13:22:57 CPU %user %nice %system %iowait %steal %idle 13:22:58 all 0.00 0.00 0.50 1.00 0.00 98.51 13:22:59 all 8.50 0.00 0.50 0.00 0.00 91.00 13:23:00 all 1.00 0.00 0.00 0.00 0.00 99.00 13:23:01 all 1.50 0.00 0.50 0.00 0.00 98.00 13:23:02 all 1.00 0.00 0.00 0.00 0.00 99.00 13:23:03 all 1.50 0.00 0.50 0.00 0.00 98.00 13:23:04 all 1.00 0.00 0.50 0.00 0.00 98.51 13:23:05 all 1.50 0.00 0.50 0.00 0.00 98.00 13:23:06 all 1.00 0.00 0.00 0.00 0.00 99.00 13:23:07 all 1.49 0.00 1.00 0.00 0.00 97.51 Average: all 1.85 0.00 0.40 0.10 0.00 97.65 trコマンドによりCSVに変更 †trコマンドによりCSVに変換されました。 $ LANG=C sar -u -f sysinfo.dat | tr -s ' ' ',' Linux,2.6.18-274.12.1.el5,(centos), 12/28/11 13:22:57,CPU,%user,%nice,%system,%iowait,%steal,%idle 13:22:58,all,0.00,0.00,0.50,1.00,0.00,98.51 13:22:59,all,8.50,0.00,0.50,0.00,0.00,91.00 13:23:00,all,1.00,0.00,0.00,0.00,0.00,99.00 13:23:01,all,1.50,0.00,0.50,0.00,0.00,98.00 13:23:02,all,1.00,0.00,0.00,0.00,0.00,99.00 13:23:03,all,1.50,0.00,0.50,0.00,0.00,98.00 13:23:04,all,1.00,0.00,0.50,0.00,0.00,98.51 13:23:05,all,1.50,0.00,0.50,0.00,0.00,98.00 13:23:06,all,1.00,0.00,0.00,0.00,0.00,99.00 13:23:07,all,1.49,0.00,1.00,0.00,0.00,97.51 Average:,all,1.85,0.00,0.40,0.10,0.00,97.65 以下のようにファイルにリダイレクトすればファイルにも出力できます。 $ LANG=C sar -u -f sysinfo.dat | tr -s ' ' ',' > cpu.csv 先頭の2行が不要であれば、以下のようにすればよいでしょう。 $ LANG=C sar -u -f sysinfo.dat | tr -s ' ' ',' | tail -n +3 |