У меня есть test_file в bash, который выводит следующее на экране.У меня нет контроля над исходным кодом, чтобы печатать их определенным образом.Итак, мне нужно разобрать некоторые значения из вывода на экран.Вот что я делаю:
MyOut=$(./my_test_file.sh) # this is my example script which echo's the
#output
echo $MyOut
показывает мне следующее
output for different segments IP address: 192.168.0.12 Segment :0xfff Segment Data: 123 23 42 23 4 444 1121 8676 34 530 323 564 523 7878 7328 96
мои ожидаемые результаты будут строковой переменной
123,23,42,23,4,444,1121,8676,34,530,323,564,523,7878,7328,96
через запятую16 значений сохраняются в некоторой переменной, которую я могу вывести в текстовый файл для дальнейшей обработки.
Я попытался поиграть с регулярными выражениями и хотел бы извлечь только последние 16 чисел в следующем выводе
Я сделал это
numbers=$(echo $MyOut | grep -o -E '[0-9]+')
дает мне
192 168 0 12 0 123 23 42 23 4 444 1121 8676 34 530 323 564 523 7878 7328 96
Мне нужно извлечь последние 16 чисел.Так как это не формат массива, могу ли я добавить в регулярное выражение что-то, что только выплевывает только последние 16 чисел, разделенных запятой ???
Кстати, если вам нужно заглянуть в my_test_file.sh, он просто повторяет утверждения
#!/bin/bash
echo "output for different segments "
echo "IP address: 192.168.0.12 Segment :0xfff"
echo "Segment Data:"
echo "123"
echo "23"
echo "42"
echo "23"
echo "4"
echo "444"
echo "1121"
echo "8676"
echo "34"
echo "530"
echo "323"
echo "564"
echo "523"
echo "7878"
echo "7328"
echo "96"
Спасибо, Эш