
Ich möchte die im Terminal generierten Datenwerte in eine CSV-Datei exportieren. Nachfolgend sehen Sie die Ausgabe, die ich nach der Ausführung einer Anweisung in Freesurfer erhalte.
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 )
Aus der obigen Ausgabe möchte ich mithilfe eines Bash-Skripts nur den Wert von atlas_ICV(eTIV) (also = 1144730 mm^3) in einer CSV-Datei extrahieren. Ich wäre für alle Vorschläge sehr dankbar.
Ich habe automatisierten Code zum Extrahieren des ICV-Werts für 10 Themen geschrieben, die ich in meinem Verzeichnis habe
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
wobei list_subjects.txt alle Themen enthält, die ich in meinem Verzeichnis habe
Antwort1
Ich möchte nur den Wert von
atlas_ICV (eTIV)
(dh =1144730 mm^3
) extrahieren.
Angesichts dieser Datei:
: 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 )
Das kann ich gebrauchen sed
:
sed -n 's/.*(eTIV) = \([0-9].*mm^3\).*/\1/p' atlas
1144730 mm^3
Wenn Sie diesen Wert aus der Ausgabe nach extrahieren möchten STDOUT
, verwenden Sie einfach eine Pipe, etwa so:
cat atlas | sed -n 's/.*(eTIV) = \([0-9].*mm^3\).*/\1/p'
1144730 mm^3
In Ihrem Fall würde es vermutlich so aussehen:
mri_segstats --subject Sub1 --etiv-only | sed -n 's/.*(eTIV) = \([0-9].*mm^3\).*/\1/p'
sed --version
sed (GNU sed) 4.2.2