Вы не найдете инструмент, который может просто принять произвольный ввод, угадать, какие данные вам нужны, и создать желаемый вывод. Для меня это звучит как сильный ИИ.
Создание чего-то подобного, даже для распознавания чисел, становится поистине волосатым. Например "123.456" одно число или два? Как насчет этого "123,456"? Является ли «35F» десятичным числом и «F» или это шестнадцатеричное значение 0x35F? Вам нужно будет создать что-то, что будет анализироваться так, как вам нужно. Вы можете сделать это с помощью регулярных выражений, или вы можете сделать это с помощью sscanf
, или вы можете сделать это другим способом, но вам придется написать что-то свое.
Однако с помощью основных регулярных выражений вы можете сделать это самостоятельно. Это не будет волшебством, но это не так много работы. Примерно так будет разбираться интересующие вас строки и консолидировать их (Perl):
my @vals = ();
while (defined(my $line = <>))
{
if ($line =~ /The temperature at P(\d*) is (\d*)F./)
{
push(@vals, "($1,$2)");
}
}
print "The temperature at P%d is %dF. {";
for (my $i = 0; $i < @vals; $i++)
{
print $vals[$i];
if ($i < @vals - 1)
{
print ",";
}
}
print "}\n";
Выход из этого isL
The temperature at P%d is %dF. {(1,35),(1,40),(3,35),(1,40)}
Вы можете сделать что-то подобное для каждого типа линий, которые вам нужно проанализировать. Вы можете даже прочитать эти регулярные выражения из файла, вместо того, чтобы настраивать каждое из них.