2017-11-20 9 views
-1

txtファイルにbashスクリプトを実行しています(10,000行含まれています)。Bashは、一度に1000行のファイルを一度に読み込みます。

splitの代わりに、それぞれ1000行ずつのファイルに分割してこれらの分割を実行するファイルを作成するのではなく、一度に1000行ずつ読み込み、関数を実行してから次の1000行を読み込みたいと思います。ファイルが読み取られました。

私はheadファイルを試してから、sedこれらの行は利用できません。

すべてのヘルプは非常にあなたはおそらく、あなたの関数への個々のチャンクを渡したい

+5

1000行の個々のチャンクに対して、どのような操作をしたいですか?あなたの使い方に基づいてソリューションを最適化することができます。 – anishsane

+0

*関数を実行する* - その関数は何をすべきか? – RomanPerekhrest

+1

cat "$ ZONE" .txt | jq -c '.EdgeStartTimestamp =(。EdgeStartTimestamp/1000000 | floor)| .EdgeEndTimestamp =(。EdgeEndTimestamp/1000000 | floor)| {"index":{"_index": "タイムオーダー"、 "_タイプ": "ログ"、 "_id":.RayID、 "パイプライン": "geoip-timeordered" }}、。 | curl -s -H "Content-Type:application/json" -XPOST localhost:9200/_bulk?pretty --data-binary @ - >/dev/null 2>&1 –

答えて

0

をいただければ幸いです。このようなループ を使用してください。

i=1 
chunk_file="yourfile.txt" 
j=$(($i + 1000 - 1)) 
total_lines=`wc -l $yourfile | awk '{print $1}'` 
#total_lines=10000 
while [[ $i -le $total_lines ]] 
do 
echo $i,$j 
sed -n "$i,$j p" > ${chunk_file} 
yourfunction ${chunk_file} 

i=$(($j + 1)) 
j=$(($i + 1000 - 1)) 

done 
関連する問題