Найти разрывы строк из системной команды MATLAB - PullRequest
5 голосов
/ 06 февраля 2012

Я пытаюсь проанализировать результирующую строку из системной команды во внешнюю программу.

[status,result] = system(cmd);

результат выводится на мою консоль с правильно вычеркнутыми строками, т.е.line1

line2

...

Но на самом деле это всего лишь один массив длинных символов, и нигде нет символов новой строки.Как Matlab узнает, когда печатать новую строку?И как я могу разделить массив символов на отдельные строки для дальнейшего анализа.Спасибо!

Ответы [ 4 ]

4 голосов
/ 06 февраля 2012

В зависимости от операционной системы разные символы обозначают конец строки.Это может быть \n, \r, \f или их комбинация.Эти символы имеют код ASCII меньше 30. Таким образом, вы можете искать их, например, find(results < 30), чтобы отобразить их позицию в строке, и int32(results(results < 30)), чтобы увидеть их код.

int32(sprintf('\n\r\f'))

ans =

      10          13          12

ЗатемВы можете использовать полученный код для разделения строки:

regexp(results, char(13), 'split')

Если вас не интересует, какие символы используются в конце строки, вы можете просто попробовать:

regexp(results, '[\f\n\r]', 'split')
2 голосов
/ 06 февраля 2012

В дополнение к ответу Андрея вы можете разбить строку на массив ячеек с помощью следующей команды:

split_result = regexp(result, '\n', 'split');

При этом используются регулярные выражения для разделения строки на каждый символ новой строки.

Затем вы можете получить доступ к каждой строке вывода системной команды, используя:

 split_result{index}
1 голос
/ 06 февраля 2012

Используя символ \n.Рассмотрим пример использования:

x = sprintf('12123\nxyz');
disp(x);

Результат:

12123
xyz

Так что вы можете найти везде, где\n символ is.

indexes = strfind(x,sprintf('\n'));

Проверить этот сайт: http://www.cplusplus.com/reference/clibrary/cstdio/sprintf/

0 голосов
/ 27 июня 2018

Начиная с Matlab R2016b, вы также можете использовать команду splitlines(), которая будет автоматически обрабатывать определения новой строки для вас.

...