q – CSVファイルや標準入力にクエリを実行できるコマンドラインツール
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 の注意点
以下の注意が必要です。
- Python 3.xはサポートしていない
- スペースを含むファイル名はサポートしていない
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のオープンソース・ソフトウェアです。