データファイル処理のためのコマンドラインツールについて

備忘録も兼ねて、Linux環境でデータファイルを加工したりしているときに扱っているコマンドラインツールをまとめてみました。

cat ファイル内容を表示する

ファイルの内容を標準出力に表示するコマンドです。

head ファイルの先頭数行を表示する

ファイルを先頭から指定行数分だけ表示します。

ファイルサイズが大きすぎるときのちょっとしたフォーマットの確認や、ヘッダーの確認によく使います。

tail ファイルの末尾数行を表示する

ファイルを末尾から指定行数分だけ表示します。

こちらもちょっとしたデータの整合性などの確認のときに使ったりします。

grep 文字列を検索する

文字列の検索をします。

引数にファイル名を直接指定できますし、標準出力から検索することも多いです。

wc 行数・単語数・バイト数を表示する

行数、単語数、バイト数の順で表示します。

単語数は空白で区切られたものを単語として扱うみたいです。

標準出力も受け取れるので、オプション指定してよく条件指定で該当した行数を調べたりするときに使ったりします。

cut 列を抽出する

指定列のみ出力します。

オプションで -d で区切り文字を指定(デフォルトはタブ)、-f で列番号を指定して使うことが多いコマンドです。

sort 行を並び替える

ソートした内容を出力します。

下記のオプションをよく使うので、これらを用いて操作します。

-t : 区切り文字を指定する。デフォルトはスペース。
-k : ソートする列番号を指定する。
-n : 列のデータを数値とみなしてソートする。
-r : 逆順にする。

uniq 重複した行を削除・表示する

重複した行を削除して表示します。

オプションの -c で重複している行数をカウントでき、 -d で逆に重複している行のみを出力できます。

ソート済みでないと有効にならないので注意が必要です。

paste 行を水平方向に連結する

2つのファイルの行を連結できます。

オプションの -d で連結する際の区切り文字を指定できます。(デフォルトはタブ)

join 行を結合する

2つのファイルをキーを指定して結合することができます。

こちらもソート済みでないと有効にならないようです。

-1 : ファイル1のキーとする列番号。
-2 : ファイル2のキーとする列番号。
-t : 区切り文字を指定する。
-a : キーの値がもう片方のファイルに存在しない行も出力する。
-v : キーの値がもう片方のファイルに存在しない行のみ出力する。

awk ファイルをスクリプトで処理する

大変便利なawkです。

列指定して抽出したり、条件指定したり、数値データを計算したり、文字列をパターンマッチしたり、とりあえず一通りのことは出来ると思います。

参考になるURLといくつかサンプルコードも載せておきます。

https://hydrocul.github.io/wiki/commands/awk.html”

http://www.e.ics.nara-wu.ac.jp/~nogu/tips/unix_command.html

q ファイルをSQLで処理する

SQLに慣れている人はこちらも使いやすいです。

CSVファイルやTSVファイルに対して、SQL文を書いてファイル処理を行なうことができます。

SQLなので一通りのデータ処理を行なうことが出来ますので、SQL得意であれば便利なコマンドかと思います。

ちなみに俺はSQLよりもスクリプトが得意なので、普段使っているとか言いながら、あまり出番はありません笑

インストールは、CentOS、Ubuntuともに下記のqコマンドのサイトより、コマンドファイルをダウンロードできますので、これに実行権を与えて使えるようになります。

q : http://harelba.github.io/q/index.html

CentOS (CentOS 6.5 64bit), Ubuntu (Ubuntu-server 14.04 64bit)

jq jsonファイルを処理する

jsonファイルを処理するときに便利なコマンドです。

jsonファイルを操作するときは、このコマンドか、他のrubyなどのスクリプトで読み込んで処理するスクリプトを書くか、あとは普通にテキストとして編集するかしか私は知らないです。

インストールは、CentOSでは下記のjqのサイトからコマンドファイルをダウンロードして、実行権を与える方法が簡単でした。

jq : http://stedolan.github.io/jq/

CentOS (CentOS 6.5 64bit)

Ubuntuではパッケージ管理コマンドからインストールできます。

Ubuntu (Ubuntu-server 14.04 64bit)

Mコマンド(Nysol) 大規模なデータを処理する

Nysol : http://www.nysol.jp/

普通のファイル編集だとサイズが大きすぎるけど、データベースに突っ込むほどではないというデータファイルに対して、早い処理が行なえるというものらしいです。(むしろ突っ込むほどでも大丈夫か?)

データの前処理のスピードを比較したものがどこかに落ちていましたが、なんかデータベースよりも早かった気が笑

こちらも大体データ処理に必要な操作は揃っている感じで、データファイルに対していろんな操作が可能です。

こちらも、とにかくコマンドの種類がたくさんありますので、WEBのマニュアルを見て、やりたいことを試していけばと思います。

インストールはUbuntuが入れやすいです。明らかにエラーのようなメッセージが出てはいますが、これでMコマンドは使えるようです。

Ubuntu (Ubuntu-server 14.04 64bit)

ちなみにCentOSにインストールしようとするとこうなりました。

CentOS (CentOS 6.5 64bit)

とりあえず下記のようにパッケージを調べてみては入れてみたりしているのですが、それでも同じエラーで入らず。

うーん、わからん…。

nkf 文字コードを変換する

実際にデータを操作するものではないですが、文字コードの変換は地味に使うので、こちらもよく用います。

よく使うオプションは主に下記でしょうか。

-w : UTF-8 に変換する。
-s : Shift_JIS に変換する。
-Lu : 改行コードを LF(Unix形式)に変換する。
-Lw : 改行コードを CRLF(Windows形式)に変換する。
-Lm : 改行コードを CR(Mac形式)に変換する。

こちらもデフォルトではインストールされていない場合があるので、パッケージ管理コマンドでインストールします。

CentOS (CentOS 6.5 64bit)

Ubuntu (Ubuntu-server 14.04 64bit)

od ファイル内容をバイナリ表示する

こちらも何かとお世話になるときがあります。

例えば、改行コードの確認や、データの文字列を変換したいけどもうまく変換されないときに、このコマンドを使って対象文字列のコードを確認し、コードで変換して解決したりといった使い方をしています。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です