Это вывод:
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
Я пробовал с 2 сценария:
Хранение в массиве
@arr=split(',',$stats); echo "statistics: $stats"
Хранение в переменной
echo $stats | cut -d ',' -f | read s1 echo $s1
Но ни один сценарий не работает.
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]; }'
ИЛИecho "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]; }'
Это должно работать.Ответы:
Вы можете использовать что-то вроде этого для одной строки ввода:
Демо-версия:
Кредиты: разделить строку на основе разделителя в bash? ответ Йоханнеса Шауба . Проверьте и другие ответы там тоже.
источник
Ваш первый фрагмент не похож на синтаксис оболочки. Это правильный синтаксис Perl.
Ваш второй фрагмент не использует
cut
правильно; Я не знаю, что ты намеревался.В оболочке есть встроенная конструкция разделения строк: когда вы пишете
$somevar
без кавычек, оболочка сначала ищет значение переменнойsomevar
, затем разбивает это значение на отдельные слова по символам, указанным вIFS
, и, наконец, интерпретирует каждое слово как глобус. шаблон (файл подстановочный знак). Таким образом, вы можете разделить строку, установивIFS
символ разделителя и временно отключив глобализацию.Обратите внимание, что если поле содержит пробелы, элемент массива сохранит этот пробел. Если вы хотите разделить все пробелы и запятые, установите
IFS=', '
. Обратите внимание, чтоIFS
это не строка для разделения, а набор символов для разделения; либо пробел или запятая будет составлять разделитель. Кроме того, существуют специальные правила для пробелов: любая последовательность из нуля или более пробелов, за которыми следует запятая, за которой следуют ноль или более пробелов, будет составлять один разделитель, а любая последовательность из одного или нескольких пробелов также будет составлять разделитель.Если вы хотите удалить только пробел в начале или конце поля, вам придется делать это элемент за элементом.
источник
источник