Shell과 Gnuplot 스크립트 결합

Shell과 Gnuplot 스크립트 결합

다음과 같은 질문이 있습니다.

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

어쨌든, 이 두 가지를 결합하고 싶다면:

plot for [i=1:6] "<(sed -n '1,100p' file'.i.'.dat)"  u 1:2

분명히 i파일 이름은 이를 제공하는 표현식에서 변수로 해석될 수 없습니다. 내가 얻는 오류는 다음과 같습니다.file'.i.'.datsedi

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

따옴표가 어떻게 바뀌는지 확인하세요. 문자열은 하나의 큰따옴표에서 다른 큰따옴표로 이동합니다. 행에 문자열이 하나만 있는 것은 <(sed -n '1,100p' file'.i.'.dat)원하는 것이 아닙니다. 내 줄에는 AND 값 <(sed -n '1,100p' file으로 .dat)연결된 두 개의 문자열이 있습니다 i.

또한 일반적으로 ( )의 작업 sed인 파일의 처음 100줄을 인쇄 할 필요가 없습니다 .headhead -n 100

관련 정보