特定の文字列を含むファイル(5MB)から、大きなファイル(27GB)の同じ文字列(およびその他の情報)をgrepする必要があります。分析を高速化するために、27GBのファイルを1GBのファイルに分割し、次のスクリプトを適用しました(ここにいる何人かの人々の助けを借りて)。ただし、あまり効率的ではありません(180KBのファイルを作成するには30時間かかります!)。
これがスクリプトです。grepよりも適切なツールはありますか?または、grepを使用するより効率的な方法はありますか?
#!/bin/bash
NR_CPUS=4
count=0
for z in `echo {a..z}` ;
do
for x in `echo {a..z}` ;
do
for y in `echo {a..z}` ;
do
for ids in $(cat input.sam|awk '{print $1}');
do
grep $ids sample_"$z""$x""$y"|awk '{print $1" "$10" "$11}' >> output.txt &
let count+=1
[[ $((count%NR_CPUS)) -eq 0 ]] && wait
done
done #&