터미널에서 생성된 데이터 값을 CSV 파일로 내보내고 싶습니다. 아래는 Freesurfer에서 명령을 실행한 후 얻는 출력입니다.
dev@dev-OptiPlex-780:~$ mri_segstats --subject Sub1 --etiv-only
$Id: mri_segstats.c,v 1.75.2.9 2013/02/16 00:09:33 greve Exp $
cwd
cmdline mri_segstats --subject Sub1 --etiv-only
sysname Linux
hostname dev-OptiPlex-780
machine x86_64
user dev
UseRobust 0
atlas_icv (eTIV) = 1144730 mm^3 (det: 1.701803 )
위 출력에서 bash 스크립트를 사용하여 csv 파일에서 atlas_ICV(eTIV)(즉 = 1144730mm^3)의 고유 값을 추출하고 싶습니다. 어떤 제안이라도 주시면 감사하겠습니다.
디렉토리에 있는 10개 주제에 대한 ICV 값을 추출하는 자동화된 코드를 작성했습니다.
for ICV in `cat list_subjects.txt`;do
#mri_segstats --subject $ICV --etiv-only
ICV_Calculation=mri_segstats --subject $ICV --etiv-only | sed -n 's/.*(eTIV) = \([0-9].*mm^3\).*/\1/p'
echo "${Subjects_ICV},${ICV_Calculation}" >>Subjects_ICV.csv
done
여기서 list_subjects.txt에는 내 디렉토리의 모든 주제가 포함되어 있습니다.
답변1
atlas_ICV (eTIV)
고유한 값 (예: =1144730 mm^3
) 을 추출하고 싶습니다.
이 파일이 주어지면:
: mri_segstats.c,v 1.75.2.9 2013/02/16 00:09:33 greve Exp $
cwd
cmdline mri_segstats --subject Sub1 --etiv-only
sysname Linux
hostname dev-OptiPlex-780
machine x86_64
user dev
UseRobust 0
atlas_icv (eTIV) = 1144730 mm^3 (det: 1.701803 )
나는 이것을 사용할 수 있습니다 sed
:
sed -n 's/.*(eTIV) = \([0-9].*mm^3\).*/\1/p' atlas
1144730 mm^3
출력에서 값을 추출하려면 STDOUT
다음과 같은 파이프를 사용하면 됩니다.
cat atlas | sed -n 's/.*(eTIV) = \([0-9].*mm^3\).*/\1/p'
1144730 mm^3
귀하의 경우에는 다음과 같을 것이라고 생각합니다.
mri_segstats --subject Sub1 --etiv-only | sed -n 's/.*(eTIV) = \([0-9].*mm^3\).*/\1/p'
sed --version
sed (GNU sed) 4.2.2