2016-07-17 18 views
4

TL; DR Perlの "-pe"オプションに相当するPythonのオプションが何であるか知りたい。pythonの "perl -pe"オプションに似たものはありますか?

私はしばらくPERLを使用していましたが、最近は簡単で簡単にPYTHONに切り替えています。シェルプロンプトで単純なテキスト処理をする必要があるとき、私はperl -peオプションを使用しました。以下はその例です。

grep foo *.txt | perl -pe 's/foo/bar/g' 

同様のことをPythonで行うには、誰かが私にこれをどうやってできるのか説明できますか?

+0

チェックアウトhttps://docs.python.org/3/using/cmdline:

ので、標準入力に渡された複数のファイルでの単純な正規表現の置換のために、あなたは一緒に何かを試みることができます。 html – Sundeep

+1

また、sedやawkのようなシェルでテキスト処理ユーティリティをチェックアウトすることもできます:http://unix.stackexchange.com/tags/text-processing/info – Sundeep

+0

も参照してくださいhttp://stackoverflow.com/questions/7842919/python -perl-per-per- – Ayman

答えて

3

-peは、2つの引数の組み合わせである-p-eです。 -eオプションは、Pythonの-cオプションとほぼ同じです。コマンドラインで実行するコードを指定できます。 -pのPythonに相当するものはありません。これは、渡されたコードを標準入力から読み込むループで実行するコードを効果的に追加します。これを実現するには、実際にコードに対応するループと、標準入力から読み取るコードを記述する必要があります。

+0

['fileinput'](https://docs.python.org/2/library/fileinput.html)モジュールには、1つのライナーを作成するために必要なものや多分、 2ライナー。 – tripleee

1

Perlは、プログラミング言語として完全に機能していましたが、当初はテキスト操作のツールとして考えられ、進化しました。

一方、Pythonは、常に汎用プログラミング言語でした。 JavaやC++と比較して、非常に柔軟なテキストとテキストの柔軟性を扱うことができますが、一般的な構文の中で、正規表現の特別な構文、他の指示がない場合の規則ファイル名を指定すると、ファイルを開く、読み込んだり、書き込んだりするために同じことが行われます。

"python -c ..."を使ってコマンドラインからPythonスクリプトを実行できますが、コマンドは完全なプログラムでなければなりません(開始、終了、終了)。

grep foo *txt| python3 -c "import sys, re, os; [(open(filename + 'new', 'wt').write(re.sub ('foo', 'bar', open(filename).read())), os.rename(filename + "new", filename))for filename in sys.stdin]" 
関連する問題