다음과 같은 질문이 있습니다.
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.'.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
따옴표가 어떻게 바뀌는지 확인하세요. 문자열은 하나의 큰따옴표에서 다른 큰따옴표로 이동합니다. 행에 문자열이 하나만 있는 것은 <(sed -n '1,100p' file'.i.'.dat)
원하는 것이 아닙니다. 내 줄에는 AND 값 <(sed -n '1,100p' file
으로 .dat)
연결된 두 개의 문자열이 있습니다 i
.
또한 일반적으로 ( )의 작업 sed
인 파일의 처음 100줄을 인쇄 할 필요가 없습니다 .head
head -n 100