String
結合 Shell 和 Gnuplot 腳本
我有以下問題:
我想使用一個循環
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
) 的作業。