.csv
약 30GB 크기의 파일이 있습니다 . 여러 문자열 일치 기준을 따라야 하는 일부 줄을 파악하고 싶습니다. 또는 를 사용하여 이 작업을 수행하는 올바른 방법은 무엇입니까 grep
? 결과를 반환하는 다음 명령을 실행해 보았지만 이전 날짜 데이터도 표시됩니다.awk
sed
grep -w "for-outbound-sports\|2019-05-16" Master.csv
awk
또는 sed
등을 사용하여 더 빠르게 수행할 수 있는 다른 방법이 있습니까 ?
고쳐 쓰다
보다 구체적으로 입력 예는 다음과 같습니다.
"","22288","1990353330","for-outbound-STARZONE","22288","Local/1990353330@for-outbound-STARZONE-00042f49;2","DAHDI/i15/01990353330-c237","Dial","DAHDI/G0/01990353330,30","2019-01-17 13:45:05","2019-01-17 13:45:17","2019-01-17 13:45:32",27,15,"ANSWERED","DOCUMENTATION","1547732705.828852",""
"","22020","1990353330","for-outbound-sports","22020","Local/1990353330@for-outbound-sports-001b223f;2","DAHDI/i14/01990353330-553f8","Dial","DAHDI/G0/01990353330,30","2019-05-15 03:57:02","2019-05-15 03:57:10","2019-05-15 03:57:44",42,34,"ANSWERED","DOCUMENTATION","1557979022.5390225",""
"","22020","1990353330","for-outbound-sports","22020","Local/1990353330@for-outbound-sports-001b223f;2","DAHDI/i14/01990353330-553f8","Dial","DAHDI/G0/01990353330,30","2019-05-16 03:57:02","2019-05-16 03:57:10","2019-05-16 03:57:44",42,34,"ANSWERED","DOCUMENTATION","1557979022.5390225",""
예제 출력:
"","22020","1990353330","for-outbound-sports","22020","Local/1990353330@for-outbound-sports-001b223f;2","DAHDI/i14/01990353330-553f8","Dial","DAHDI/G0/01990353330,30","2019-05-16 03:57:02","2019-05-16 03:57:10","2019-05-16 03:57:44",42,34,"ANSWERED","DOCUMENTATION","1557979022.5390225",""
답변1
grep
이미 대용량 파일을 탐색하고 줄에서 단어나 문자를 찾는 매우 빠른 방법이지만 단어 -w
정규식을 사용하면 약간 느려질 수도 있습니다. 느린 것은 프로그램 자체가 아니라 grep
터미널의 출력 때문인 경우가 많습니다. 출력을 파일로 지정하여 간단하게 테스트할 수 있습니다.
grep -w "for-outbound-sports\|2019-05-16" Master.csv > greped_master.csv
언제든지 이 프로그램을 사용하여 parallel
대용량 파일을 분할하고 멀티스레딩을 활용할 수 있습니다. parallel --pipe --block 2M grep foo < bigfile
보시 다시피
여기