2013-08-06 3 views
0

У меня довольно большой файл (возникают проблемы с sed и awk здесь). Линии Я в основном заинтересованы в выглядеть:Как вычесть два числа в одной строке в шаблоне?

\# Name: name [...] [...] [here=178542..178940] 

или

\# Name: name [here=reversed(10000..18899)] 

Из этой линии я хочу, чтобы извлечь два числа. Первое число (x) после рисунка [here= или [here=reversed( и останавливается до .., второе число (y) начинается сразу после .. и заканчивается ] или )]. После извлечения этих чисел я хочу вычитать y-x = z и напечатать name и 'z'.

Для любых советов и советов я был бы очень благодарен!

ответ

1

Это работает для меня:

perl -ne '/Name: (\S*) .*\[here=\D*(\d+)\.\.(\d+)/ and print $1, ": ", $3-$2, "\n";' data.txt 

с data.txt:

\# Name: name [...] [...] [here=178542..178940] 
\# Name: name [here=reversed(10000..18899)] 
1

Это один вкладыш работает для примера линии:

perl -ne '/Name: (.*?) .*\[here=.*([0-9]+)\.\.([0-9]+)/ and print "$1 ", $3-$2, "\n"' 
Смежные вопросы