파일 목록을 반복하고 정규식 일치 항목을 검색하는 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