Bash에서 터미널의 데이터 값을 CSV 파일로 내보내는 방법

Bash에서 터미널의 데이터 값을 CSV 파일로 내보내는 방법

터미널에서 생성된 데이터 값을 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

관련 정보