Python의 GREP
GREP는 정규식을 사용하여 특정 줄에 대한 일반 텍스트 파일을 검색 할 수있는 흥미로운 명령 줄 기능입니다.
정규 표현식은 Python에서 매우 많이 사용되며 문자열이 패턴과 일치하는지 여부를 확인하는 데 사용할 수 있습니다.
Python의re
모듈을 사용하면 정규 표현식을 다룰 수 있습니다. 다음 코드에서는 Python에서 GREP를 구현하고 파일에서 특정 패턴을 검색합니다.
with open("sample.txt", "r") as file:
for line in file:
if re.search(pattern, line):
print(line)
읽기 모드에서 필요한 파일을 열고 파일을 한 줄씩 반복합니다. 그런 다음re.search()
함수를 사용하여 모든 행에서 패턴을 검색합니다. 패턴이 발견되면 라인이 인쇄됩니다.
Python을 사용하여 명령 줄에서이를 구현하는 또 다른 깔끔한 방법이 있습니다. 이 방법은 터미널에서 파일을 실행하는 동안 명령 줄에서 검색 할 정규식과 파일을 지정합니다. 이를 통해 Python에서 GREP를 올바르게 복제 할 수 있습니다.
다음 코드는이를 구현합니다.
import re
import sys
with open(sys.argv[2], "r") as file:
for line in file:
if re.search(sys.argv[1], line):
print(line)
sys
모듈은 명령 줄에 제공된 모든 인수의 배열을 반환하는argv()
함수를 제공합니다.
이 파일을grep.py
로 저장하고 터미널에서이 Python 스크립트를 실행하고 다음과 같은 방법으로 필요한 인수를 지정할 수 있습니다.
python grep.py 'RE' 'file-name'
여러 인수로 작업하려면glob
모듈을 사용할 수 있습니다.
glob
모듈을 사용하면 디렉토리에서 패턴과 일치하는 파일의 경로를 찾을 수 있습니다.
파이썬에서 GREP를 복제하는 데 사용되는 것은 아래에서 볼 수 있습니다.
import re
import sys
import glob
for arg in sys.argv[2:]:
for file in glob.iglob(arg):
for line in open(file, "r"):
if re.search(sys.argv[1], line):
print(
line,
)
iglob()
함수는 함수로 전달되는 디렉토리의 파일을 반환하는 객체를 만듭니다.
GREP를 단 몇 줄로 구현하는 또 다른 간결한 방법은 다음과 같습니다.
import re
import sys
map(sys.stdout.write, (l for l in sys.stdin if re.search(sys.argv[1], l)))
이 방법은 더 정확하고 메모리 효율적이며 터미널에서 직접 이러한 라인을 실행할 수 있습니다.
python -c "import re,sys;map(sys.stdout.write,(l for l in sys.stdin if re.search(sys.argv[1],l)))" "RE"
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn