2014年2月21日金曜日

擬似unixコマンド1

特に仕事でウィンドウズ使っているとunixコマンドを使いたくなることがあります。

そんなの時のために擬似的に似たような動作をする簡易的なpythonプログラムを作っています。
例えばgrep
第1引数の文字列が含まれている行のみ表示するコマンドです。

grep x file

こんな風に使います。
つまり、この場合fileの中身でxが入っている行のみを表示します。
といってもgrepにはもっといろんな機能が付いていますが、簡易版なので、この機能のみを実装してみます。
pythonで書くとかなり簡単に書けます。


import sys

for line in sys.stdin:
    if sys.argv[1] in line:
        print line.rstrip()


処理が遅いと思うのならばリスト内包表記で

import sys
print '\n'.join( [ line.rstrip()   for line in sys.stdin if sys.argv[1] in line ] )

とか書くと少し処理が速くなります。
これをpgrep.pyとかいう名前で保存し、

pgrep.py import pgrep.py
などとコマンドラインで実行すると
文字列importのある行のみ抜き出して表示されます。
いまは作成したプログラムpgrep.pyに対して処理してみましたが、3番目のファイルはテキストならなんでも構いません。
書式は下のとおりです。

pgrep.py [検索文字列] [対象ファイル名]


0 件のコメント:

コメントを投稿