So exportieren Sie Datenwerte auf dem Terminal in eine CSV-Datei in Bash

So exportieren Sie Datenwerte auf dem Terminal in eine CSV-Datei in Bash

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

verwandte Informationen