次の質問があります。
file1.dat, file2.dat, ...
ループを使用して、ある出力プロットに別のファイル(この場合は命名)のデータをプロットしたいと思います。これを行うには、シェルスクリプトでこれを使用します。
plot for [i=1:6] u 1:2 'file'.i.'.dat'
今、各ファイルに特定の範囲の行だけを描きたいと思います。これを行うには、次の方法を学びました。
plot "<(sed -n '1,100p' file.dat)" u 1:2
とにかく、これら2つを組み合わせたい場合:
plot for [i=1:6] "<(sed -n '1,100p' file'.i.'.dat)" u 1:2
明らかにi
、ファイル名はそれを提供する式では変数として解釈できません。私が得るエラーは次のとおりです。file'.i.'.dat
sed
i
sed: can't read file_.i..dat: No such file or directory
この問題を回避する方法や私の目標を達成するための他の方法に関する提案はありますか?
答え1
以下を変更する必要があります。
plot for [i=1:6] "<(sed -n '1,100p' file'.i.'.dat)" u 1:2
到着する:
plot for [i=1:6] "<(sed -n '1,100p' file".i.".dat)" u 1:2
引用符がどのように変わるかを確認してください。文字列は、1つの二重引用符から別の二重引用符に移動します。行に文字列が1つだけあることは<(sed -n '1,100p' file'.i.'.dat)
望むものではありません。私の行には、AND値<(sed -n '1,100p' file
で.dat)
連結された2つの文字列がありますi
。
また、通常()のジョブであるsed
ファイルの最初の100行を印刷する必要はありません。head
head -n 100