を使用してCSV形式にテキストファイルを再フォーマット:次の形式でのテキストの数千行からなる私は、ファイル(exOut.txt)を持っているbashスクリプト
[CV] solver=newton-cg, penalty=l2, multi_class=ovr, max_iter=187.637633813, C=0.778324314482
[CV] solver=newton-cg, penalty=l2, multi_class=ovr, max_iter=187.637633813, C=0.778324314482
[CV] solver=newton-cg, penalty=l2, multi_class=ovr, max_iter=187.637633813, C=0.778324314482
[CV] solver=sag, penalty=l2, multi_class=multinomial, max_iter=187.637633813, C=0.31181629405
[CV] solver=sag, penalty=l2, multi_class=multinomial, max_iter=187.637633813, C=0.31181629405
[CV] solver=sag, penalty=l2, multi_class=multinomial, max_iter=187.637633813, C=0.31181629405
[CV] solver=sag, penalty=l2, multi_class=multinomial, max_iter=187.637633813, C=0.31181629405, score=0.497312, total=11.0min
[CV] solver=sag, penalty=l2, multi_class=multinomial, max_iter=187.637633813, C=0.31181629405, score=0.499232, total=11.0min
[Parallel(n_jobs=-2)]: Done 2 out of 6 | elapsed: 11.0min remaining: 22.0min
[CV] solver=sag, penalty=l2, multi_class=multinomial, max_iter=187.637633813, C=0.31181629405, score=0.499762, total=11.1min
[Parallel(n_jobs=-2)]: Done 3 out of 6 | elapsed: 11.1min remaining: 11.1min
[CV] solver=newton-cg, penalty=l2, multi_class=ovr, max_iter=187.637633813, C=0.778324314482, score=0.449309, total=19.6min
[Parallel(n_jobs=-2)]: Done 4 out of 6 | elapsed: 19.6min remaining: 9.8min
[CV] solver=newton-cg, penalty=l2, multi_class=ovr, max_iter=187.637633813, C=0.778324314482, score=0.449831, total=19.7min
[CV] solver=newton-cg, penalty=l2, multi_class=ovr, max_iter=187.637633813, C=0.778324314482, score=0.451609, total=19.7min
[Parallel(n_jobs=-2)]: Done 6 out of 6 | elapsed: 19.7min remaining: 0.0s
[Parallel(n_jobs=-2)]: Done 6 out of 6 | elapsed: 19.7min finished
...
私はその意志シェルスクリプトを記述しようとしていますこのファイルを使用して、CSV形式の新しいファイルを作成するように再フォーマットし、「スコア」属性の行だけを記録します。これは次のようになります。
solver,penalty,multi_class,max_iter,C,score
sag,l2,multinomial,187.638,0.312,0.497
sag,l2,multinomial,187.638,0.312,0.499
sag,l2,multinomial,187.638,0.312,0.500
newton-cg,l2,ovr,187.638,0.779,0.449
newton-cg,l2,ovr,187.638,0.779,0.450
newton-cg,l2,ovr,187.638,0.779,0.450
可能な場合、すべての値は1000番目の位に丸められます。
最終的に私はこのCSVをとり、 "score"を除いたすべてのフィールドを持つレコードを特定し、これらのパラメータが与えられた平均スコアで1レコードを置き換えることによって要約版を作成したいと考えています。例:
solver,penalty,multi_class,max_iter,C,avg_score
sag,l2,multinomial,187.638,0.312,0.499
newton-cg,l2,ovr,187.638,0.779,0.450
助けていただければ幸いです。私は正規表現でプロではなく、主に私が尋ねる理由です。のみよりも、パターンの一つの大きな発生をかなり認識のgrep、awkのを使用して
これまで私が試したさまざまなスクリプトを含むsedは、grep '=.*,' exOut.txt
:
EDITフィードバックのための1人のおかげで、ここでいくつかの詳細情報です複数のフィールドと、各行の最初の部分のみを消去するsed 's/^[^\=]*\=//g' exOutput.txt > firstCSV.csv
があります。
ようこそスタックオーバーフロー。これはコード作成サービスではなく、あなたの要件と言語を投稿し、誰かがあなたのためにコードを書いています。私たちは喜んでお手伝いしますが、まず問題を自分で解決し、あなたの努力をあなたの質問に含める努力をすることを期待しています。ここに尋ねる前にあなたが試みたコードを表示するには[編集]してください。詳細が必要な場合は、[ask]を参照してください。 –
これは 'awk'でかなりシンプルにすべきです。試してみてください。それでもそれが得られない場合は、コードとその出力例を投稿できます。 (そして 'awk'は学ぶのに十分な時間です) – Jack
bashスクリプトが必要な場合は、なぜpythonでタグ付けされていますか? –