GNU Parallel은 bash를 사용하여 Unix에서 여러 파일을 병렬로 처리합니다.

GNU Parallel은 bash를 사용하여 Unix에서 여러 파일을 병렬로 처리합니다.

파일 목록을 반복하고 정규식 일치 항목을 검색하는 bash 스크립트가 있습니다. 다음은 현재 코드의 일부입니다.

for file in $Files_To_Parse; do (cat $file) | grep -ioE "($Keys$Delimiters$Payload+$End_String)" | grep -v 'null' | grep -v '*' done

  • $Files_To_Parse는 공백으로 구분된 파일 이름 문자열입니다.

  • $Keys, $Delimiters, $Payload$ 및 End_String은 정규식 패턴입니다.

코드는 현재 (천천히) 작동합니다.

여러 파일을 병렬로 처리하거나 한 파일에서 정규식 일치 항목을 병렬로 검색하고 싶지만 GNU의 Parallel 패키지를 사용하여 이 작업을 수행하는 방법을 잘 모르겠습니다.

관심을 가져주셔서 감사합니다.

답변1

디스크 I/O로 인해 다음이 제한될 수 있습니다.

doit() {
    (cat "$1") | grep -ioE "($Keys$Delimiters$Payload+$End_String)" | grep -v 'null' | grep -v '*'
}
export -f doit
parallel doit ::: $Files_To_Parse

이 튜토리얼을 단계별로 진행해 보세요. 당신의 명령줄이 당신을 사랑할 것입니다:

man parallel_tutorial

관련 정보