String

結合 Shell 和 Gnuplot 腳本

  • September 11, 2017

我有以下問題:

我想使用一個循環file1.dat, file2.dat, ...在一個輸出圖中繪製來自不同文件(在本例中命名)的數據。我在 shell 腳本中使用它來做到這一點:

plot for [i=1:6] u 1:2 'file'.i.'.dat'

現在我還只想從每個文件中繪製一定範圍的行。為此,我學會了使用:

plot "<(sed -n '1,100p' file.dat)"  u 1: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

您對如何規避這個問題或其他方法來實現我的目標有什麼建議嗎?

你必須改變:

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

注意引號是如何變化的。字元串從一個雙引號到另一個。在您的行中,只有一個字元串<(sed -n '1,100p' file'.i.'.dat)不是您想要的。在我的行中,有兩個字元串<(sed -n '1,100p' file與..dat)``i

此外,無需sed列印文件的前 100 行,這通常是head( head -n 100) 的作業。

引用自:https://unix.stackexchange.com/questions/390995