Hagi utils

出典: Wikinote

【オレ外秘】(笑)

ちょっとしたコマンドやライブラリを自宅と会社で同期するためのページ。 学生時代に作ってたヤツは今じゃ全然使い物にならない…。

目次

C 言語

printb() 関数

整数を 2 進数で表示する関数。

ソースコード [表示]

使用例:argv[1]atoi() に渡して printb() にかけるコマンド

[hagio@lab ~]$ printb 1234567890
01001001100101100000001011010010
[hagio@lab ~]$ printb -1
11111111111111111111111111111111

fill コマンド

標準入力の各行を、指定された行長までスペースで埋めるコマンド。

ソースコード [表示]

printf() で簡単にできた…。バッファリングバージョン。

ソースコード [表示]

gawk スクリプト

maxlen コマンド

テキストファイル中の最も長い行の長さを求めるスクリプト。

ソースコード [表示]

まあこれくらいインスタントに書いた方が早いですが。

$ gawk '{if (max < length()) max = length()}END{print max}' FILE

とか。

bash スクリプト

addtime コマンド

ソースコード

#!/bin/bash
# addtime : add date and time to each line of standard input.
# Usage: addtime [-s] < FILE
/bin/gawk '{ print strftime("%F %T"), $0 }'
[ "$1" = "-s" ] && echo

rcat コマンド

指定されたファイルを逆順に連結するコマンド。

例えば、cat /var/log/messages* とやると messages, messages.1, messages.2, ... と最新のファイルから順に出力されるので時系列にならない。 rcat /var/log/messages* なら messages.4, messages.3, ... という順で出力されるので すべての messages を一気に時系列で見ることができる。

ソースコード

#!/bin/bash
# rcat : concatenate files reversely and print
# Usage: rcat FILES..
cat $(ls -r "$@")

短い書き方思いついたらこれだけになった。。

既知のバグ

  • 連番が 10 以上になると順序がおかしくなる。

plog コマンド

プログラムを定期的に実行し、その出力にタイムスタンプを付与するシェルスクリプト。

Usage:
    plog [-d] [-i INTERVAL] [-n] command
    plog -h
Options:
    -d           時刻に加えて日付を付加する。
    -h           使い方を表示する。
    -i INTERVAL  コマンドを実行する間隔(秒)。デフォルトでは 1 秒。
    -n           時刻等を付加せず、コマンドの実行結果のみを出力する。
ソースコード [表示]

Python スクリプト

subset.py

./subset.py SUPERSET SUBSET

で、SUBSET に含まれる SUPERSET の要素にタグをつける。

ソースコード [表示] 実行例 [表示]
個人用ツール