2016-07-17 1 views
4

TL; DR Perl에서 "-pe"옵션과 대략 일치하는 Python의 옵션이 무엇인지 알고 싶습니다.파이썬에서 "perl -pe"옵션과 비슷한 것이 있습니까?

필자는 PERL을 오랫동안 사용 했었지만, 요즘은 필통 (PYTHON)으로 바꾸기 쉽다. 쉘 프롬프트에서 간단한 텍스트 처리가 필요할 때 perl -pe 옵션을 사용했습니다. 다음은 그 예입니다.

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

파이썬에서 비슷한 일을하는 사람이 내가 어떻게 할 수 있는지 설명해 줄 수 있습니까?

+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은 두 개의 인수, -p-e의 조합입니다. -e 옵션은 Python의 -c 옵션과 거의 동일합니다.이 옵션을 사용하면 명령 줄에서 실행할 코드를 지정할 수 있습니다. -p과 동일한 Python 코드는 없으며 전달 된 코드를 표준 입력에서 루프를 실행하는 코드에 효과적으로 추가합니다. 이를 얻으려면 실제로 표준 입력에서 읽는 코드와 함께 코드에 해당 루프를 작성해야합니다.

+0

['fileinput'] (https://docs.python.org/2/library/fileinput.html) 모듈에는 한 줄짜리 또는 어쩌면 한 줄짜리를 만드는데 필요한 것들이 많이 포함되어 있습니다. 두 라이너. – tripleee

1

Perl은 처음에는 프로그래밍 언어로 생각되었지만 텍스트 조작을위한 도구로 생각되고 발전했습니다.

파이썬은 다른 한편으로는 항상 범용 프로그래밍 언어였습니다. 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]" 
관련 문제