Если вы уверены, что строки всегда будут следовать этому шаблону, вы можете использовать awk для выбора соответствующих столбцов с учетом правильных разделителей (в данном случае пробел или запятая):
awk -F '[, ]+' '{print $2"\t"$4"\t"$7}' file.txt
Опция -F принимает регулярные выражения, поэтому вы можете выбрать лучшие разделители в будущем, если хотите.
Вот вывод:
$ cat file.txt
iter: 0 ival: 0, fcost = 0
iter: 0 ival: 1, fcost = 1
iter: 0 ival: 2, fcost = 0.7115281224
iter: 1 ival: 3, fcost = 0.3990854323
iter: 2 ival: 4, fcost = 0.1486154944
iter: 3 ival: 5, fcost = 0.1353816539
iter: 4 ival: 6, fcost = 0.1013548374
iter: 5 ival: 7, fcost = 0.1856721342
$ awk -F '[, ]+' '{print $2"\t"$4"\t"$7}' file.txt
0 0 0
0 1 1
0 2 0.7115281224
1 3 0.3990854323
2 4 0.1486154944
3 5 0.1353816539
4 6 0.1013548374
5 7 0.1856721342
Редактировать: как указано в комментариях при печати результата вы можете не захотеть, чтобы разделитель между числами был символом табуляции, поэтому вы можете выбрать другой символ вместо "\ t" в примере выше. Вы также можете использовать что-то вроде:
awk -F '[, ]+' '{print $2,$4,$7}' file.txt
, который будет использовать один пробел в качестве разделителя:
Они выводятся , разделенные одиночными пробелами, за которыми следует символ новой строки.
Другой вариант может использовать printf , для более сложных комбинаций.