Esta é a saída:
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
Eu tentei com 2 cenário:
Armazenando em uma matriz
@arr=split(',',$stats); echo "statistics: $stats"
Armazenando em uma variável
echo $stats | cut -d ',' -f | read s1 echo $s1
Mas nenhum dos cenários 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]; }'
OUecho "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]; }'
Isso deve funcionar.Respostas:
Você pode usar algo assim, para uma única linha de entrada:
Demo:
Créditos: Dividir string com base no delimitador no bash? resposta de Johannes Schaub . Verifique as outras respostas lá também.
fonte
Seu primeiro trecho não se parece com a sintaxe do shell. Está correta a sintaxe Perl.
Seu segundo trecho não é usado
cut
corretamente; Não sei o que você pretendia.O shell possui uma construção de divisão de cadeia interna: quando você escreve
$somevar
sem aspas, o shell primeiro pesquisa o valor da variávelsomevar
, depois divide esse valor em palavras separadas nos caracteres especificados porIFS
e, finalmente, interpreta cada palavra como uma glob padrão (curinga do arquivo). Assim, você pode dividir uma string definindoIFS
para o caractere separador e desligando temporariamente o englobamento.Observe que, se um campo contiver espaço em branco, o elemento da matriz manterá esse espaço em branco. Se você deseja dividir em todos os espaços em branco e vírgulas, defina
IFS=', '
. Observe queIFS
não é uma string para dividir, mas um conjunto de caracteres para dividir; um espaço ou uma vírgula constituirá um separador. Além disso, existem regras especiais para espaços em branco: qualquer sequência de zero ou mais espaços seguida por vírgula seguida por zero ou mais espaços constituirá um separador e qualquer sequência de um ou mais espaços também constituirá um separador.Se você deseja apenas remover os espaços em branco no início ou no final de um campo, precisará fazê-lo elemento a elemento.
fonte
fonte