3つのCSVファイルに含まれるデータをGnuplotでプロットする必要があります。

一般的に、次のコードを使用して2つのCSVファイルからプロットします。

$datablock << EOD `cat ../Q1a/sim_Q1.csv <(tail -n+8 ../Q1b/sim_Q1.csv | tr ""," " " | sort -nk19 )| tail -n+8 | tr ""," " " | sort -nk19 > ../Q1a/Q6_ressult.txt` EOD set print "|bash -x" print $datablock set print 

CSVは3つの異なるディレクトリにあります。データは行8から始まり、",の文字を取り出し、列19でデータを並べ替える必要があります。

このコードを拡張して、同じことを行う3つの異なるCSVを貼り付ける方法がわかりません。sorttail -n+8およびtrコマンドを実行し、結果を含む最終的な.txtファイルを取得します。

回答

Gnuplotがこれに具体的にどのように作用するかはわかりませんが、tail複数のファイルを作成する方法を探している場合はコマンドラインで名前を渡すだけでこれを行うことができます。

唯一の落とし穴は、tailが出力をヘッダーで区切って、人間が見やすいようにすることです。 -qオプションを追加します:

 -q, --quiet, --silent never output headers giving file names 

私が見る限り、プロセスの置換と複数の(r e)並べ替えは単純に行います

tail -q -n+8 ../Q1a/sim_Q1.csv ../Q1b/sim_Q1.csv ../Q1c/sim_Q1.csv | tr ""," " " | sort -nk19 

コメント

  • ありがとうございます。コードは単純で、正常に機能します。 2番目のファイルの行の範囲(たとえば、8行から470行)をどのように選択できるかをお聞きしたいと思います。 sed -n -e '8,470p'を使用することはできますが、ソリューションを変更する方法がわかりません。問題は、3つのファイルのうちの1つでこの範囲を選択する必要があることだと思います。
  • @ user1993416おそらく最も簡単な変更はtail -q -n+8 file1 <(head -n 470 file2) file3
  • です。

  • 最後に、私の結果は5つのファイルにあり、そのうちの2つは、ある行までhead -nを作成する必要があります。 tail -q -n+8 file1 <(head -n470 file2 <(head -n380 file3)) file4 file5のようなものを書くことはできますか?
  • 5つのファイルを貼り付けて新しい質問を投稿しました。よろしく。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です