Seu primeiro trecho não se parece com a sintaxe do shell. Está correta a sintaxe Perl.
Seu segundo trecho não é usado cutcorretamente; Não sei o que você pretendia.
O shell possui uma construção de divisão de cadeia interna: quando você escreve $somevarsem aspas, o shell primeiro pesquisa o valor da variável somevar, depois divide esse valor em palavras separadas nos caracteres especificados por IFSe, finalmente, interpreta cada palavra como uma glob padrão (curinga do arquivo). Assim, você pode dividir uma string definindo IFSpara o caractere separador e desligando temporariamente o englobamento.
set -f; IFS=,
arr=($stats)
set +f; unset IFS
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 que IFSnã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.
shopt -s extglob
for ((i=0; i<${#arr[@]}; i++)); do
arr[i]=${arr[i]#+( )} # strip one or more spaces at the beginning
arr[i]=${arr[i]%+( )} # strip one or more spaces at the end
done
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.