q はCSV形式やTAB区切りのテキストファイルを入力として、コマンドラインでSQLに似たクエリを指定し実行することができます。また、標準入力を使った入力やパイプで接続して利用することができるソフトウェアです。

q の主な特徴

1) ZIP形式で圧縮したテキスト・ファイルも指定可能

コマンドラインオプション -z もしくは –gzipped を指定することで、ZIP形式ファイルを入力することができます。解凍せずにファイルを使用できるのは便利です。拡張子が .gz であれば、ZIP形式であると自動認識します。

-z, --gzipped       Data is gzipped. Useful for reading from stdin. For
                    files, .gz means automatic gunzipping

2) すべての文字エンコーディングをサポート

入力と出力の両方で、すべての文字エンコーディングをサポートしています。

-e ENCODING, --encoding=ENCODING
                        Input file encoding. Defaults to UTF-8. set to none
                        for not setting any encoding - faster, but at your own
                        risk...

-E OUTPUT_ENCODING, --output-encoding=OUTPUT_ENCODING
                        Output encoding. Defaults to 'none', leading to
                        selecting the system/terminal encoding

q の使い方

ps コマンドの出力を q の入力にして実行する例です。

ps -ef | q -H "SELECT UID,COUNT(*) cnt FROM - GROUP BY UID ORDER BY cnt DESC LIMIT 3"

root 152
harel 119
avahi 2

q の注意点

以下の注意が必要です。

  1. Python 3.xはサポートしていない
  2. スペースを含むファイル名はサポートしていない

q のインストール

それぞれのOSにしたがって、次の方法があります。

Mac:
    brew install q

Linux:
    ディストリビューションによって、以下を選択します。

    rpm -ivh <package -filename>
    sudo dpkg -i </package><package -filename>

Windows:
    インストーラ setup-q-1.4.0.exe をダウンロードして実行します。

上記の他にスクリプトファイル q をダウンロードしてPATHが通ったディレクトリに置き、実行権を与える方法があります。

OSやネットワークの調査を行う時に、その場で気付いたことを実行することがあります。急いで調査したい時に役立つとでしょう。また、wireshark などのコマンドで出力した大きなサイズのファイルは、日頃、圧縮して保管することが多いと思います。そうした時、解凍せずにそのまま実行できるのは便利です。

qはPython製、GPLのオープンソース・ソフトウェアです。

Home Page

harelba/q