grep, sed 및 awk가 매우 큰 파일에서 데이터를 찾는 데 실행 가능한 도구인지 궁금합니다.
1TB 파일이 있다고 가정 해 보겠습니다. 이 파일의 텍스트를 처리하려는 경우 별도의 명령인 grep, sed 및 awk를 사용하고 함께 혼합하면 시간 범위는 어떻게 될까요?
물론 하드웨어 사양에 따라 결과가 다르기 때문에 구체적인 답변을 드리는 것은 불가능하지만 대략적인 추정을 해주시면 도움이 될 것 같습니다.
답변1
grep
일반적으로 말하면 가장 빠르고 sed
가장 느리다고 말하고 싶습니다 . 물론 이는 정확히 무엇을 하고 있는지에 따라 다릅니다. awk
보다 훨씬 빠르게 찾았습니다 sed
.
실제 정규 표현식이 필요하지 않고 단순한 고정 문자열(옵션 -F)만 필요한 경우 grep 속도를 높일 수 있습니다.
파이프라인에서 grep, sed, awk를 함께 사용하려면 가능하면 grep 명령을 먼저 입력하겠습니다.
예를 들면 다음과 같습니다.
grep -F "foo" file | sed -n 's/foo/bar/p'
일반적으로 다음보다 빠릅니다.
sed -n 's/foo/bar/p' file
grep
첫 번째 줄의 내용은 불필요해 보이지만 .
LC_ALL=C
그런데 간단한 ASCII 텍스트 파일로 작업하는 경우 이러한 명령을 사용하여 작업 속도를 높일 수 있습니다.
내 모든 경험은 gnu 명령을 기반으로 한다는 점에 유의하세요. 다양한 구현을 시도하고 속도를 비교할 수도 있습니다.