PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Augabe Zeilen cat in Array



nieselfriem
26.10.15, 16:07
Hallo!

Ich lasse mit eine Logdatei mit cat und awk so filtern, dass ich nur die Datum Strings der Dateie habe

cat tmp.log | awk -v count=$COUNT 'NR>=4 && NR<count'| awk '{print $6" "$7" "$8}' ergibt


Oct 26 10:40
Oct 26 10:41
Oct 26 10:42
Nun möchte ich gern, dass ich diese Ausgabe in ein Array packe in der Form
$array={"Oct 26 10:40","Oct 26 10:41","Oct 26 10:42"}
Mein Versuch mit
$array=($(cat tmp.log | awk -v count=$COUNT 'NR>=4 && NR<count'| awk '{print $6" "$7" "$8}')) ergibt aber ein Array


$array={"Oct","26", "10:40","Oct"..} wie mappe ich die Zeilen in ein Array?

VG niesel

BetterWorld
26.10.15, 16:12
quote korrekt.
Irgendwie sowas:
awk '{print "\"" $6" "$7" "$8} "\""')

nieselfriem
26.10.15, 16:18
{print $6" "$7" "$8}' ist korrekt "gequotet" die " " sind nur Lehrzeichen sonst würde die Ausgabe so aussehen



Oct2610:40
Oct2610:41
Oct2610:42

Efraim
26.10.15, 16:28
Reden wir von einem Shell-Array? Welche Shell?

nieselfriem
26.10.15, 16:29
Jepp es geht um ein BASH-Script und von einem BASH-Array

VG niesel

Efraim
26.10.15, 17:03
Bevor wir uns einen Knoten quoten:

while read line; do array[i++]="$line"; done < <( hier dein cat-awk )

Übrigens braucht awk definitiv kein cat.

BetterWorld
26.10.15, 17:31
{print $6" "$7" "$8}' ist korrekt "gequotet" die " " sind nur Lehrzeichen sonst würde die Ausgabe so aussehen
Dir ist aber schon aufgefallen, dass ich die Ausgabe dieser ganzen Zeile in Anführungszeichen gesetzt habe? Damit wird der String so ausgegeben:
"Oct 26 10:40"
Und das ist das, was du in der Shell haben willst.

Vielleicht liest du das nochmal && verstehst, was ich schreibe.
Und wenn nicht, probiere es halt aus.


Anfügung: "Quoten" bezieht sich immer auf die Shell. In awk macht der Begriff wenig Sinn.

tozewomlori110
27.10.15, 03:55
Oh, Ich denke, einen Versuch ist es wert.