2014-02-10 2 views
0

У меня есть файл с данными.Perl один вкладыш для извлечения и суммирования чисел из файла

Файл:

Rows: 2 
... 
... 
Rows: 3 

Команда для поиска 'Ряды'.

perl -ne 'while (/Rows\:/gi) { s/([.]*Rows :)([.]*)/$2/i, s/^ *//; print }'` 

Дает:

2 
3 

Я хочу суммировать значение и дать результат в виде 5 (2 + 3).

Пожалуйста, помогите.

ответ

2

Флаг -n ставит время цикла для вас, так что вам не нужно цикла:

perl -lne '$s += $1 if /^Rows:\s*(\d+)/; END{print $s}' input 
+2

Нет, '-l' флаг обрабатывает символы новой строки (' chomp's и наборы '$ \'). Флаг '-n' добавляет цикл while. – TLP

+0

OP был зациклен над регулярным выражением –

+0

@TLP, спасибо исправил его – perreal

Смежные вопросы