昨日はDOSコマンド画面でCSVファイルを編集しましたが、Windows上で動くツールを探したら、CSVエディタと言うものがありました。

CSVエディタも、いくつかソフトがありましたが、行の抽出ができるフリーソフトの「SmScvEdit」を使ってみました。ダウンロードは以下のサイトから。

しもりんツールのページ

サイトで「CSVエディタ」のところにある SmCsvEdit.zip をダウンロード後、展開します。インストーラはないので、展開したフォルダを適当な場所に移して、その中の SmCsvEdit.exe を実行して使います。



20130319a1CSVファイル(H25-2.csv)を読み込むと「ファイル読み込み種別」画面になるので、「CSV形式」を選んで「OK」ボタンを押します。



20130319bメイン画面では、下部に行数が表示されます。

20160行 15列 となっています。



20130319c0必要な行を抽出するには、「行操作(L)」メニューの「絞込表示 Ctrl+F」で、「行絞込表示設定」画面を表示します。ツールバーの「絞込み」アイコンを押すか、「Ctrl」キーを押しながら「F」キーを押しても同じですね。

「個別1」タブで、「この条件を□有効にする」をチェックします。

検索列番号は、時刻データの列なので、「2」を入力します。「参照」ボタンから選んでもOK。

検索文字列に、残したいデータを記述します。複数ある場合は、カンマ(,)で区切ります。「参照」ボタンから選んでもOK。・・・今回は以下のデータを記述しました。

00:00:00,01:00:00,02:00:00,03:00:00,04:00:00,05:00:00,06:00:00,07:00:00,08:00:00,09:00:00,10:00:00,11:00:00,12:00:00,13:00:00,14:00:00,15:00:00,16:00:00,17:00:00,18:00:00,19:00:00,20:00:00,21:00:00,22:00:00,23:00:00



20130319c1あるいは、ワイルドカードが使えるので、以下の記述でも問題ないようです。

??:00:00

この方が簡単ですね。^^

後は、初期値のままで、「OK」ボタンを押せば、検索文字列と合致した行が抽出されます。



20130319d絞込みが完了した画面です。

画面の下側に、「絞込 672行」と表示されます。


20130319eここでは、不要な列は、手動で削除します。

「Ctrl」キーを押しながら、削除したい列の列番号(Col.#)をクリックして行きます。選択が終わったら「列操作(C)」メニューの「削除 (D)」をクリックします。「 n 列を削除して宜しいですか?」の確認画面が表示されるので、「はい」ボタンを押します。

「列が削除されたため絞込み表示を解除します」と表示され、列が削除され、行は元に戻った表示になります。

再度、「行操作(L)」メニューの「絞込表示 Ctrl+F」で、「行絞込表示設定」画面を表示すると、先に設定した情報は残っているので、「OK」ボタンを押します。

・・・てことは、行削除より先に、列削除を実行したほうがスマートなのかな。・・・



20130319fこれで表示上は、必要なデータのみとなりました。

しかし、画面の下部に、「絞込 672行」 「20160行 8列」となっている通り、実際には不要な行が存在したままです。

そこで、表示されている内容をファイルに保存します。



20130319g1「ファイル(F)」メニューの「条件付き保存 Ctrl+B」を実行します。いきなり「Ctrl」キーを押しならが「B」キーを押しても同じですね。

「出力条件設定」画面で、上から二つ目の「行出力モード」で「絞込表示済の出力」にチェックを入れたら、下部の「出力ファイル名」を設定して「OK」ボタンを押します。

確認画面「<C:\work\H25-2-sm.csv>ファイルに 672 件出力しました。」が表示されるので「OK」を押します。
念のために、昨日UnxUtilsツールで作成した H25-2-sel.csv ファイルと、本日SmCsvEditで作成した H25-2-sm.csv ファイルの内容に違いがないか、DOSプロンプトの fc.exe コマンドで確認してみました。

C:\work>fc H25-2-sel.csv H25-2-sm.csv
ファイル H25-2-sel.csv と H25-2-SM.CSV を比較しています
FC: 相違点は検出されませんでした

・・・となり、問題ないようですね。(^^;

コマンドを打ち込むのを嫌がる GUI 愛好家には、このソフトをお薦めしてみましょう。