逆引きUNIXコマンド/複数スペースが区切りとなっているファイルをCSVに変換する
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
#navi(../)
* 複数スペースが区切り文字となっているファイルをCSVに変換...
各種コマンドを実行するとスペースで整形された情報がターミ...
この出力をCSV(またはTSV)に変換する方法を記します。
#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)
* trコマンドによるCSV変換 [#g8f24d85]
タイトルにはファイルと記述してありますが、もちろん標準入...
下記の例はlsコマンドの出力結果をcsvに変換しています。
tr -s ' ' ','
- ls -l コマンドを実行
$ ls -l /etc/init.d/
合計 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>
- trコマンドにより複数続くスペース区切りをカンマに変換(CS...
$ ls -l /etc/init.d/ | tr -s ' ' ','
合計,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>
man trをして-sのオプションの意味を貼りつけておきます。
-s, --squeeze-repeats
同じ文字の繰り返しを 1 文字に置き換える。この操作は変換...
SET1 にある文字の繰り 返しを、その文字 1 文字に置き換え...
* TSV(タブ区切り)に変更する方法) [#d53eec55]
カンマだったところを\tにするだけです。
tr -s ' ' '\t'
$ ls -l /etc/init.d/ | tr -s ' ' '\t'
合計 564
-rwxr-xr-x 1 root root 1897 7月 ...
-rwxr-xr-x 1 root root 1566 1月 ...
-rwxr-xr-x 1 root root 1441 3月 ...
-rwxr-xr-x 1 root root 1429 3月 ...
-rwxr-xr-x 1 root root 1284 1月 ...
-rwxr-xr-x 1 root root 3328 3月 ...
<snip>
* 当方がよく使う場面 [#m55b6275]
複数スペースが続き区切り文字になっている情報としてsarなど...
trコマンドによりCSVに変換したり、TSVに変換することにより...
** sarの出力をCSVにする [#o6575982]
以下のコマンドを実行してシステム情報を取得します。
sar -A -o sysinfo.dat 1 10
(1秒おき計10回全ての情報を取得しsysinfo.datファイルに取得...
sarコマンドにより出力されたファイルを利用しCPU利用状況を...
以下のように-uでCPU利用状況を指定した出力結果です。尚、LA...
(LANG=Cで英語表記にならないようであれば、LC_ALL=Cとしてみ...
$ 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 %i...
13:22:58 all 0.00 0.00 0.50 ...
13:22:59 all 8.50 0.00 0.50 ...
13:23:00 all 1.00 0.00 0.00 ...
13:23:01 all 1.50 0.00 0.50 ...
13:23:02 all 1.00 0.00 0.00 ...
13:23:03 all 1.50 0.00 0.50 ...
13:23:04 all 1.00 0.00 0.50 ...
13:23:05 all 1.50 0.00 0.50 ...
13:23:06 all 1.00 0.00 0.00 ...
13:23:07 all 1.49 0.00 1.00 ...
Average: all 1.85 0.00 0.40 ...
** trコマンドによりCSVに変更 [#a67feaa1]
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...
#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)
終了行:
#navi(../)
* 複数スペースが区切り文字となっているファイルをCSVに変換...
各種コマンドを実行するとスペースで整形された情報がターミ...
この出力をCSV(またはTSV)に変換する方法を記します。
#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)
* trコマンドによるCSV変換 [#g8f24d85]
タイトルにはファイルと記述してありますが、もちろん標準入...
下記の例はlsコマンドの出力結果をcsvに変換しています。
tr -s ' ' ','
- ls -l コマンドを実行
$ ls -l /etc/init.d/
合計 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>
- trコマンドにより複数続くスペース区切りをカンマに変換(CS...
$ ls -l /etc/init.d/ | tr -s ' ' ','
合計,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>
man trをして-sのオプションの意味を貼りつけておきます。
-s, --squeeze-repeats
同じ文字の繰り返しを 1 文字に置き換える。この操作は変換...
SET1 にある文字の繰り 返しを、その文字 1 文字に置き換え...
* TSV(タブ区切り)に変更する方法) [#d53eec55]
カンマだったところを\tにするだけです。
tr -s ' ' '\t'
$ ls -l /etc/init.d/ | tr -s ' ' '\t'
合計 564
-rwxr-xr-x 1 root root 1897 7月 ...
-rwxr-xr-x 1 root root 1566 1月 ...
-rwxr-xr-x 1 root root 1441 3月 ...
-rwxr-xr-x 1 root root 1429 3月 ...
-rwxr-xr-x 1 root root 1284 1月 ...
-rwxr-xr-x 1 root root 3328 3月 ...
<snip>
* 当方がよく使う場面 [#m55b6275]
複数スペースが続き区切り文字になっている情報としてsarなど...
trコマンドによりCSVに変換したり、TSVに変換することにより...
** sarの出力をCSVにする [#o6575982]
以下のコマンドを実行してシステム情報を取得します。
sar -A -o sysinfo.dat 1 10
(1秒おき計10回全ての情報を取得しsysinfo.datファイルに取得...
sarコマンドにより出力されたファイルを利用しCPU利用状況を...
以下のように-uでCPU利用状況を指定した出力結果です。尚、LA...
(LANG=Cで英語表記にならないようであれば、LC_ALL=Cとしてみ...
$ 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 %i...
13:22:58 all 0.00 0.00 0.50 ...
13:22:59 all 8.50 0.00 0.50 ...
13:23:00 all 1.00 0.00 0.00 ...
13:23:01 all 1.50 0.00 0.50 ...
13:23:02 all 1.00 0.00 0.00 ...
13:23:03 all 1.50 0.00 0.50 ...
13:23:04 all 1.00 0.00 0.50 ...
13:23:05 all 1.50 0.00 0.50 ...
13:23:06 all 1.00 0.00 0.00 ...
13:23:07 all 1.49 0.00 1.00 ...
Average: all 1.85 0.00 0.40 ...
** trコマンドによりCSVに変更 [#a67feaa1]
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...
#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)
ページ名: