2016-07-25 3 views
0

Ich habe a .dat Datei es Daten enthält wie:Wie alles außer den erforderlichen Zahlen zu beseitigen, während aus der .dat-Datei zu lesen?

count ------- 234 (1 row) 

ich das nur 234 als Integer abrufen möchte und in einer Variablen in Shell-Skript-Datei gespeichert werden soll.

Ich habe den folgenden Befehl verwendet:

WORKFLOW_STATUS_COUNT=`cat status_count.dat | tr -d " "` 

aber es wird immer ausgegeben als:

count ------- 234 (1 row) 

aber erwartet ist 234 Integer-Wert.

Antwort

4

können Sie verwenden:

WORKFLOW_STATUS_COUNT=`cat status_count.dat | cut -d" " -f 3 ` 

cut teilt die Zeile mit dem spacebar delimeter und wählen Sie dann nur die dritte Spalte

Wenn die Datei aus Windows Quelle kommen, können Sie versuchen, verwenden dos2unix:

WORKFLOW_STATUS_COUNT=`cat status_count.dat | dos2unix | cut -d" " -f 3 ` 
+0

Ich habe den obigen Befehl aber immer die Ausgabe als ------- intead der Nummer .. –

+0

@PavanSingh ändern die '3' auf '4', vielleicht haben Sie eine zusätzliche' verwendet Leertaste " –

+0

Wenn ich 3 zu 4 ändere, bekomme ich Ausgabe als ------- 234 –

0

Sie könnten while read Klausel verwenden, um Ihr Ergebnis zu erhalten. Dies würde nur funktionieren, wenn Ihre Datenspalten immer konsistent sind. Z.B. Wenn Ihre Datenspalten wie diese count 258 (1 row)'(continuing space between count and 258) sind, würde das nicht funktionieren.

While read count_var hyphen your_var other; do 
    echo $your_var 
    Do_something 
Done < filename.dat 
Verwandte Themen