私は検索する847のキーワードのリストを持つファイル(queryids.txt
)を持っています。私は約12の巨大なcsvファイルからキーワードをgrepする必要があります(最大2,184,820,000行を持っています)。最終的には、それをある種のデータベースにロードしますが、今は特定のキーワードをgrepする必要があります。巨大なCSVファイルの高速grep
私のコマンドは次のとおりです。私はこのようなbashスクリプトを書くことを考えています
LC_ALL=C fgrep -f queryids.txt subject.csv
:
#!/bin/bash
for f in *.csv
do
(echo "Processing $f"
filename=$(basename "$f")
filename="${filename%.*}"
LC_ALL=C fgrep -f queryids.txt $f > $filename"_goi.csv") &
done
と私が使用してそれを実行します:nohup bash myscript.sh &
queryids.txtのルックスこのように:
ENST00000401850
ENST00000249005
ENST00000381278
ENST00000483026
ENST00000465765
ENST00000269080
ENST00000586539
ENST00000588458
ENST00000586292
ENST00000591459
対象ファイルは、次のようになります
target_id,length,eff_length,est_counts,tpm,id
ENST00000619216.1,68,2.65769E1,0.5,0.300188,00065a62-5e18-4223-a884-12fca053a109
ENST00000473358.1,712,5.39477E2,8.26564,0.244474,00065a62-5e18-4223-a884-12fca053a109
ENST00000469289.1,535,3.62675E2,4.82917,0.212463,00065a62-5e18-4223-a884-12fca053a109
ENST00000607096.1,138,1.92013E1,0,0,00065a62-5e18-4223-a884-12fca053a109
ENST00000417324.1,1187,1.01447E3,0,0,00065a62-5e18-4223-a884-12fca053a109
私は、これは長い時間がかかるだろう心配です。これを行うより速い方法がありますか?
ありがとうございます!私は、パフォーマンスを向上させるために提案することができ
時間のほとんどは、CSVファイルを読み込む取られます。これは、ループをどのように構造化するかにかかわらず実行する必要があります。 'queryids.txt'は小さいので、各ファイルについてそれを再読み込みしても大きな違いはありません。 – Barmar
質問を完成させるには、投稿した2つの入力ファイルの予想出力を含めるように[編集]してください。 –
2本の_billion行のCSVファイルがありますか?_最終的には、それを何らかのデータベースにロードしますが、今のところは_私は10年ごとに毎年これを言ってきましたか? :)あなたの技術的な負債を食い止める! –