アイデアは @andyras のものと同じですが、stats
.
タイトルに答えるには、 を使用できますevery ::n::n
。ここで、n は選択したレコード (データポイント) 番号です。レコードは 0 から数えられるので、最初の行が必要な場合はevery ::0::0
. 、、または( inの使用法は文書化されていません) のいずれかでevery
使用できます。何もプロットしないので、私は好みますが、gnuplot コンソールを乱雑にします (コマンドの最後で乱雑なコンソールを使用しないようにEDITします)。また、任意の割り当てを行うために使用できます。plot
splot
stats
every
stats
stats
nooutput
stats
using
たとえば、最初のレコードの 2 列目を保存するには、
stats "my2columndata.dat" u (firstdatapoint=$2) every ::0::0
最後のレコードを取得するには、 によって保存されたレコードのstats
数を使用し、それを のレコード番号として使用できますevery
。
stats "my2columndata.dat" # this saves the number of records to STATS_records
stats "my2columndata.dat" u (lastdatapoint=$2) every ::STATS_records-1::STATS_records-1
これで、要求したプロットを実行できます。
そして、私が終える前に、いくつかの追加のハック:
列を数える mgilson のアイデアを使用すると、すべての列を多数の変数に保存することもできます。(注: 、およびの省略形u
を使用しています)using
ev
every
filename = "yourfilename.dat"
r = 0 # record number
good = 1
col = 1
while (good) {
stats filename u (good=valid(col)) ev ::r::r
if (good) {
stats filename u col ev ::r::r
eval(sprintf("v%d=STATS_max",col))
col = col+1
}
}
データファイルに 8 つの列が含まれている場合、v1
tov8
が定義されます。
しかし、外部ツールを使用するのが正しい方法だと思います(UNIXライクは、テール/ヘッドなどを使用できます)。これを可能にしたのは gnuplot の作者のせいにしましょう :)