Ваши входные данные кажутся C-подобными, поэтому теоретически было бы лучше разобрать их с помощью парсера C. Если вы используете регулярные выражения, даже для простых задач, вам придется иметь дело с изменяющимися пробелами, многострочным вводом и т.д. Проблема в том, что си-парсеры не разбирают комментарии, а вы, очевидно, хотите это сделать.
Вот сценарий perl, который дает ожидаемый вывод для вашего примера.
#!/usr/bin/perl -n
#
BEGIN { $i = 0; }
if (m!^\s*(.+)\s+([^ ]+);\s*/\*\s*(\d+)\s*(\d+)\s*\*/\s*$!)
{
print "$i,$1,$2,$3,$4\n";
$i+=1
}
Если вы сохраните этот скрипт как script.pl
в папке, где находится input.txt
, используйте его так:
./script.pl < input.txt > output.txt