
我想將終端機上產生的資料值匯出到 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