私はスクリプトをスピードアップしようとしていますが、現在は約30秒かかります。私はbashの初心者ですが、私はいくつかのヒントを見つけました(https://unix.stackexchange.com/a/169765でヒントを見つけましたが、まだ私の問題を修正できません)。grepとsedを使った遅いbashスクリプト
私がする必要があるのは、外部ファイルからデータを取得し、数値を2つの配列に抽出することです。私のスクリプトは遅すぎることを除いて、うまく動作します。
readData=`cat $myfile`
# readData = [[1491476100000,60204],[1491476130000,59734],...,[1491476160000,60150]]
# I have approximately 5000 points (two numbers in each point)
pointTime=()
pointVal=()
for line in `echo $readData | grep -Po "[0-9]+,[0-9]+"`; do
# Get first number but drop last three zeroes (e.g. 1491476100)
pointTime+=(`echo $line | grep -Po "^[0-9]+" | sed "s/\(.*\)000$/\1/"`)
# Get second number, e.g. 60204
pointVal+=(`echo $line | grep -Po "[0-9]+$"`)
done
たぶん私はパラメータ展開内のいくつかの正規表現を使用することができますが、私は方法がわかりません。
、我々はあなたが既にあなたは上記のコード内のコメントとして求めているものを見つけることができ、その後 – RavinderSingh13
同じの詳細を助けることができる –
何がデータをどうしようとしています一度あなたはそれが配列に読み込まれている? Bashはこのデータを処理するのに最適な選択肢になるとはっきりしていません。たとえば、入力ファイルが有効なJSONであることに注意してください。ほとんどの言語では、これをネイティブデータ構造にロードする簡単な方法があります。あるいは、JavaScriptで直接操作することもできます。 –