ファイルを同じサイズのファイルに分割し、このファイルを並列に実行する必要があるシェルスクリプトへの入力として使用します。

ファイルを同じサイズのファイルに分割し、このファイルを並列に実行する必要があるシェルスクリプトへの入力として使用します。

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

次のようなものも使用できます。パラメータまたはGNUパラレルBashループの代わりに。

おすすめ記事