Я хочу пересчитать все числа, которые находятся в файле.Как считать все числа в файле с awk?
Пример:
input -> Hi, this is 25 ...
input -> Lalala 21 or 29 what is ... 79?
Вывод должен быть сумма всех чисел: 154
(то есть, 25 + 21 + 29 + 79).
Я хочу пересчитать все числа, которые находятся в файле.Как считать все числа в файле с awk?
Пример:
input -> Hi, this is 25 ...
input -> Lalala 21 or 29 what is ... 79?
Вывод должен быть сумма всех чисел: 154
(то есть, 25 + 21 + 29 + 79).
$ cat data
Hi, this is 25 ...
Lalala 21 or 29 what is ... 79?
$ grep -oP '\b\d+\b' data | paste -s -d '+' | bc
154
С этого beautiful answer by hek2mgl о том, как извлечь наибольшее количество в файле, давайте поймать все числа в файле и просуммировать их:
$ awk '{for(i=1;i<=NF;i++){sum+=$i}}END{print sum}' RS='$' FPAT='-{0,1}[0-9]+' file
154
Это устанавливает разделитель таким образом, что весь блок текста является уникальной записью. Затем он устанавливает FPAT
так, что каждый номер (положительный или отрицательный) является другой области:
FPAT #
Регулярное выражение (как строка), которая говорит поглазеть для создания полей на основе текст, который соответствует регулярному выражению. Назначение значения для FPAT переопределяет использование FS и FIELDWIDTHS для поля .
Это работает !!! Большое спасибо! –
Могу ли я задать вам еще один вопрос об awk? (: –
@MikeJames yep, но, вероятно, стоит [задать другой вопрос] (http://stackoverflow.com/questions/ask). – fedorqui
С grep
и awk
:
$ cat test.txt
Hi, this is 25 ...
Lalala 21 or 29 what is ... 79?
$ grep '[0-9]\+' -o test.txt | awk '{ sum+=$1} END {print sum}'
154
Не делайте этого. 'Grep' ничего не может сделать' awk' can «т. –
К сожалению, я должен сделать это с помощью команды AWK –