Частота подсчета определенных чисел в текстовом файле с научными обозначениями

С gnu grep

grep -B <number_lines> -A <number_lines> -n 'PATTERN' /path/to/files/*.log

Например, чтобы получить 6 строк над строкой, которую нашел grep, и 4 строки после нее:

grep -B 6 -A 4 -n 'PATTERN' /path/to/files/*.log

Из man grep

Контроль контекстных строк
-A NUM, --after-context=NUM
Вывести NUM строк контекста после совпадающих строк.
-B NUM, --before-context=NUM
Вывести NUM строк лидирующего контекста перед совпадающими строками.

1
10.06.2015, 18:26
2 ответа

Вы можете попробовать это с помощью awk:

awk -F"," 'NR == 3, NR == 8 { for (i = 1; i <= NF; i++) { if ($i == 0) { cnt++; } if ($i >= 2.452555e-05 && $i <= 0.0032784) { cnt1++; } } } END { print cnt, cnt1; }' file
1
29.04.2021, 00:27

Ваша отправная точка хороша; теперь вам нужно перебрать поля, где предварительным условием является определение соответствующего разделителя полей. Чтобы подсчитать нули:

awk '
  BEGIN { FS="[, ]+" }
  NR==3, NR==8 { for (i=1; i<=NF; i++) if ($i==0) c++ }
  END { print c }
'

Для проверки диапазона измените условие if соответственно, примерно так: if ($ i> = ... && $ i <= ...) .

1
29.04.2021, 00:27

Теги

Похожие вопросы