Esta es la salida:
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
Intenté con 2 escenarios:
Almacenar en una matriz
@arr=split(',',$stats); echo "statistics: $stats"
Almacenar en una variable
echo $stats | cut -d ',' -f | read s1 echo $s1
Pero ninguno de los escenarios está funcionando.
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]; }'
Oecho "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]; }'
esto debería funcionar.Respuestas:
Puede usar algo como esto, para una sola línea de entrada:
Manifestación:
Créditos: ¿ Cadena dividida basada en delimitador en bash? Respuesta de Johannes Schaub . Verifique las otras respuestas allí también.
fuente
Su primer fragmento no es nada como la sintaxis de shell. Es la sintaxis correcta de Perl.
Su segundo fragmento no se usa
cut
correctamente; No sé lo que pretendías.El shell tiene una construcción de división de cadenas incorporada: cuando escribe
$somevar
sin comillas, el shell primero busca el valor de la variablesomevar
, luego divide ese valor en palabras separadas en los caracteres especificados porIFS
, y finalmente interpreta cada palabra como un globo patrón (comodín de archivo). Por lo tanto, puede dividir una cadena configurandoIFS
el carácter separador y desactivando temporalmente el globbing.Tenga en cuenta que si un campo contiene espacios en blanco, el elemento de matriz retendrá ese espacio en blanco. Si desea dividir en todos los espacios en blanco, así como las comas, establezca
IFS=', '
. Tenga en cuenta queIFS
no es una cadena para dividir sino un conjunto de caracteres para dividir; un espacio o una coma constituirán un separador. Además, existen reglas especiales para los espacios en blanco: cualquier secuencia de cero o más espacios seguida de una coma seguida de cero o más espacios constituirá un separador, y cualquier secuencia de uno o más espacios también constituirá un separador.Si solo desea eliminar espacios en blanco al principio o al final de un campo, deberá hacerlo elemento por elemento.
fuente
fuente