10000개의 레코드가 포함된 파일을 동일한 레코드 크기의 여러 파일로 분할하고 싶습니다. 이러한 새 파일은 쉘 스크립트에 대한 입력으로 필요합니다. 쉘 스크립트는 각 파일에 대해 병렬로 실행되어야 합니다. 여기서 루프를 사용할 수 있나요?
답변1
데이터 파일이 호출 data.txt
되고 실행하려는 스크립트가 호출된다고 가정합니다 script.sh
. 그런 다음 다음과 같이 할 수 있습니다.
#!/bin/bash
# Create a temporary directory
splitdir="$(mktemp -d)"
# Splite the data-file into files of 1000 lines each
split --lines=1000 -d --suffix-length=3 data.txt "${splitdir}/chunk"
# Run your script on each data file separately
for chunk in "${splitdir}/"*; do nohup script.sh "${chunk}" &; done