Dies ist die Ausgabe:
3,aac-lc, 93.8, aaclc, 77.3, h.264, 1024.6, h.264, 1029.1, 31, 31, 0,0,0.000000,31,31,0,0,0.000000,7,0,0,0.000000,30,1280 720,10,0,0,0.000000,30,1280 720
Ich habe es mit 2 Szenarien versucht:
Speichern in einem Array
@arr=split(',',$stats); echo "statistics: $stats"
Speichern in einer Variablen
echo $stats | cut -d ',' -f | read s1 echo $s1
Aber keines der beiden Szenarien funktioniert.
awk '{ split("3,aac-lc, 93.8, aaclc, 77.3, h.264, 1024.6, h.264, 1029.1, 31, 31, 0,0,0.000000,31,31,0,0,0.000000,7,0,0,0.000000,30,1280 720,10,0,0,0.000000,30,1280 720 ",arr,","); print arr[1]; }'
ODERecho "3,aac-lc, 93.8, aaclc, 77.3, h.264, 1024.6, h.264, 1029.1, 31, 31, 0,0,0.000000,31,31,0,0,0.000000,7,0,0,0.000000,30,1280 720,10,0,0,0.000000,30,1280 720" | awk '{ split($0,arr,","); print arr[1]; }'
Das sollte funktionieren.Antworten:
Sie können so etwas für eine einzelne Eingabezeile verwenden:
Demo:
Credits: Geteilte Zeichenfolge basierend auf dem Trennzeichen in Bash? Antwort von Johannes Schaub . Überprüfen Sie dort auch die anderen Antworten.
quelle
Ihr erstes Snippet ist nichts anderes als eine Shell-Syntax. Es ist die richtige Perl-Syntax.
Ihr zweites Snippet wird nicht
cut
richtig verwendet. Ich weiß nicht, was du beabsichtigt hast.Die Shell verfügt über ein integriertes Konstrukt zum Teilen von Zeichenfolgen: Wenn Sie
$somevar
ohne Anführungszeichen schreiben , sucht die Shell zuerst nach dem Wert der Variablensomevar
, teilt diesen Wert dann in separate Wörter für die durch angegebenen Zeichen aufIFS
und interpretiert schließlich jedes Wort als Glob Muster (Datei-Platzhalter). Sie können also eine Zeichenfolge teilen, indem SieIFS
das Trennzeichen festlegen und das Globbing vorübergehend deaktivieren.Beachten Sie, dass das Array-Element dieses Leerzeichen beibehält, wenn ein Feld Leerzeichen enthält. Wenn Sie sowohl Leerzeichen als auch Kommas aufteilen möchten, setzen Sie
IFS=', '
. Beachten Sie, dassIFS
es sich nicht um eine Zeichenfolge handelt, bei der geteilt werden soll, sondern um eine Reihe von Zeichen, bei denen geteilt werden soll. entweder ein Leerzeichen oder ein Komma bilden ein Trennzeichen. Darüber hinaus gibt es spezielle Regeln für Leerzeichen: Jede Folge von null oder mehr Leerzeichen, gefolgt von einem Komma, gefolgt von null oder mehr Leerzeichen, bildet ein Trennzeichen, und jede Folge von einem oder mehreren Leerzeichen bildet auch ein Trennzeichen.Wenn Sie Leerzeichen nur am Anfang oder Ende eines Feldes entfernen möchten, müssen Sie dies Element für Element tun.
quelle
quelle