편집: 저는 스택 교환 및 bash 스크립팅을 처음 사용하므로 실례합니다. 제 질문이 반대표를 받은 이유는 질문이 너무 모호하거나 먼저 아무것도 시도하지 않았기 때문인 것 같습니다. 후자를 선택하고 필요한 형식으로 형식을 알아냈지만 여전히 그 주위에 필요한 구조를 만드는 방법을 모릅니다(예: "MRS_struct = GannetLoad({})").
ls -1 *GABA.dat | tr '\n' ' ' | sed -e "s/[^ ][^ ]*/'&'/g" >> filenames.m
ls -1 *water.dat | tr '\n' ' ' | sed -e "s/[^ ][^ ]*/'&'/g" >> filenames.m
ls -1 *.nii | tr '\n' ' ' | sed -e "s/[^ ][^ ]*/'&'/g" >> filenames.m
/편집하다
3개의 시리즈 파일로 가득 찬 디렉토리가 있습니다.
- 파일 이름은 (예:,,)입니다.
IDv#_GABA.dat
3001v1_GABA.dat
3002v1_GABA.dat
- 파일 이름은 (예:,,)입니다.
IDv#_water.dat
3001v1_water.dat
3002v1_water.dat
- 파일 이름은 (예:,)입니다.
ID_v#.nii
3001_v1.nii
3002_v1.nii
주어진 디렉토리에는 특정 이름의 파일만 포함되어 있습니다.V#(즉, v1
파일만 또는 v2
파일만).
다음 형식의 bash 스크립트를 통해 이러한 파일 이름에서 텍스트 파일을 작성하고 싶습니다(위의 예제 파일 사용).
MRS_struct = GannetLoad({'3001v1_GABA.dat' '3002v1_GABA.dat'},{'3001v1_water.dat' '3002v1_water.dat'});
MRS_struct = GannetFit(MRS_struct);
MRS_struct = GannetCoRegister(MRS_struct, {'3001_v1.nii' '3002_v1.nii});
MRS_struct = GannetSegment(MRS_struct);
답변1
주석에서 와일드카드가 지적했듯이 이는 대부분 전역 확장에 작용하는 일부 "인쇄" 루프에 올바른 텍스트를 래핑하는 것에 관한 것입니다. 유일한 차이점은(Q 예제 출력에서 가능한 작은따옴표 철자 오류 외에) 다음 스크립트가 목록의 마지막 요소 뒤에 후행 공백을 배치한다는 것입니다. 아래 샘플 출력을 참조하세요.
#!/bin/sh
printf "MRS_struct = GannetLoad({";
for f in *_GABA.dat
do
printf "'%s' " "$f"
done
printf "},{"
for f in *_water.dat
do
printf "'%s' " "$f"
done
printf "});\n"
printf "MRS_struct = GannetFit(MRS_struct);\n"
printf "MRS_struct = GannetCoRegister(MRS_struct, {"
for f in *.nii
do
printf "'%s' " "$f"
done
printf "});\n"
printf "MRS_struct = GannetSegment(MRS_struct);\n"
질문의 출력 예:
MRS_struct = GannetLoad({'3001v1_GABA.dat' '3002v1_GABA.dat'},{'3001v1_water.dat' '3002v1_water.dat'});
MRS_struct = GannetFit(MRS_struct);
MRS_struct = GannetCoRegister(MRS_struct, {'3001_v1.nii' '3002_v1.nii});
MRS_struct = GannetSegment(MRS_struct);
위 스크립트의 출력:
MRS_struct = GannetLoad({'3001v1_GABA.dat' '3002v1_GABA.dat' },{'3001v1_water.dat' '3002v1_water.dat' });
MRS_struct = GannetFit(MRS_struct);
MRS_struct = GannetCoRegister(MRS_struct, {'3001_v1.nii' '3002_v1.nii' });
MRS_struct = GannetSegment(MRS_struct);