端末で生成されたデータ値を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