手段のために目的を忘れたと揶揄された件の続きみたいな話だが、またしても同じような作業が必要になった。やはり xml ファイルを切りだして、excel (calc) に変換するという作業だ。
<?xml version="1.0" encoding="utf-8" ?> <MonitorLog> <Categories> <Category name=".NET CLR Data" help=".Net CLR データです。"> <Objects> <Object name="SqlClient: Current # pooled and nonpooled connections" help="接続 (プールされているかどうかは不問) の現在の数です。"/> <Object name="SqlClient: Current # pooled connections" help="プロセスに関連付けられているすべてのプールに現在含まれる接続の現在の数です。"/> <Object name="SqlClient: Current # connection pools" help="プロセスに関連付けられているプールの現在の数です。"/> <Object name="SqlClient: Peak # pooled connections" help="全プールをとおし、プロセスの開始以降の接続の数です。"/> <Object name="SqlClient: Total # failed connects" help="接続を試みようとしたものの、何らかの理由で失敗した接続の合計数です。"/> <Object name="SqlClient: Total # failed commands" help="実行を試みたものの、何らかの理由で失敗したコマンドの合計数です。"/> </Objects> <Instances/> </Category> <Category name=".NET CLR Exceptions" help="CLR 例外処理のランタイム統計です。"> <Objects>
途中で目的を忘れてしまった前回と同じやり方だと、grep で Category と Object の含まれる行だけを抜き出し、sed で 不要な部分を置換して、テキストエディタで若干の整形処理を行ってから calc に読み込む…ということをしたのだが、途中で気づいた awk 一発ぢゃん!をやってみることにした。
awk -F ” {print $2 “t” $4;} filename.xml > filename.csv
不要な行の削除処理はしていないが、ホントに一発だった。なんてこった。
Windowsだとawkを用意している間に目的を忘れそうです
それはそれ、BSDだから最初から入ってるし。
でも、awk と gawk ってどんだけ違うんだろう?