私はもう少しのPythonを使用しようとしていると私は、これはそれのための最高のユースケースではありません知っているが、それは、私はそれが仕事を得ることができない理由で私を悩ま。Pythonの検索文字列ワンライナー
私は現在のPython 2.7.6を使用していると私は猫にファイルをしたいし、その後、正規表現に基づいて、それのうち、特定の文字列を引っ張ります。以下のコードは、私が望むものに対してうまく動作しますが、最初の行だけを見ています。
cat /tmp/blah.txt | python -c "import re,sys; m = re.search('Host: (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}).*OS:(.*) Seq:', sys.stdin.read()); print m.group(1), m.group(2)"
だから、私はちょうどファイル全体を読み込み、そこに私のコードの残りの部分を入れてループまたはFileInputクラスのために使用できると仮定が、私はのためのループでエラーが発生して続けます。
cat /tmp/blah.txt | python -c "import sys; for line in sys.stdin: print line" File "<string>", line 1
import sys; for line in sys.stdin: print line
^
SyntaxError: invalid syntax
私はこれをいくつか試してみましたが、動作させることはできません。それは常にfor部分で無効な構文を示します。私はそれが非常に愚か/明白な何かでなければならないことを知っていますが、どんな助けも高く評価されます。
私はarg.pyと呼ばれるプログラムを作成し、その中に以下のコードを入れて、猫を経由してのPythonを呼び出すと、それが正常に動作します。これは、動作していない1つのライナー部分です。
import sys
for line in sys.stdin:
print line
を確認し、このような構文 をサポートしていませんか? 'grep'を使うか、Pythonからファイルを開くだけです。 – jonrsharpe
私が最初の文章で述べたように、これはこれが最良の使用例ではないことを知っています。私はそれを動作させることができるかどうかを見たいと思っていました。ログを検索するためのコマンドラインからたくさんのことを行い、Pythonでもうまく動作するかどうかを見たいと思っていました。 – Eric