如何在 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) (即 = 1144730 mm^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

相關內容