Я не уверен, будет ли это то, что вы хотите или нет, но при условии, что строки, которые вы ищете, будут в следующем формате:
Tests run: <integer>, Failures: <integer>, Errors: <integer>, Skipped: <integer>
Следующее может работать для вас:
sed -e 's/^Tests run: \([0-9]*\), Failures: \([0-9]*\), Errors: \([0-9]*\), Skipped: \([0-9]\).*$/\1,\2,\3,\4/'
При условии следующего ввода в файле с именем test.log
Tests run: 1042, Failures: 0, Errors: 0, Skipped: 0
Tests run: 12, Failures: 0, Errors: 0, Skipped: 0
Tests run: 104, Failures: 1, Errors: 3, Skipped: 4
Running:
cat test.log | sed -e 's/^Tests run: \([0-9]*\), Failures: \([0-9]*\), Errors: \([0-9]*\), Skipped: \([0-9]\).*$/\1,\2,\3,\4/'
даст следующий вывод:
1042,0,0,0
12,0,0,0
104,1,3,4
Конечно, вы можете настроить окончательный вывод, поиграв с / \ 1, \ 2, \ 3, \ 4 / частью выражения sed.