С 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 строк лидирующего контекста перед совпадающими строками.
Вы можете попробовать это с помощью 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
Ваша отправная точка хороша; теперь вам нужно перебрать поля, где предварительным условием является определение соответствующего разделителя полей. Чтобы подсчитать нули:
awk '
BEGIN { FS="[, ]+" }
NR==3, NR==8 { for (i=1; i<=NF; i++) if ($i==0) c++ }
END { print c }
'
Для проверки диапазона измените условие if
соответственно, примерно так: if ($ i> = ... && $ i <= ...)
.