Среднее значение суммы между шаблонами

Вы также можете использовать xargs, если хотите.

find./ -name '-file0*' | xargs cat 

Как отмечалось выше, ни один из ваших файлов не имеет расширения .txt. Если бы они это сделали, вы могли бы заменить -file0*на*.txt

4
30.10.2019, 17:23
2 ответа

Используя инструменты Gnu sed n dc, мы можем сделать это:

$ sed -re '
    /^[0-9]+$/,/pattern/!b
    /^[0-9]+$/{H;d;}
    x;y/\n/ /
    s#.*#dc -e "0dsn&[+ln1+snz1<+]s+l+xln/p"#ep
    z;x
' file

Результаты:

pattern1
250
pattern2
166
pattern3
pattern4

Предполагается, что конечная строка не может быть числом. Также предполагается отсутствие отрицательных чисел.

Мы настроили диапазон в sed для поиска строк, содержащих только цифры для шаблона. Вне этого все печатается как есть. Числа добавляются в конце, а затем на линии шаблона среднее значение вычисляется с помощью команды s///e программы gnu sed с использованием утилиты dc.

0
27.01.2020, 20:54

Awkподход:

awk '/pattern/{ if (cnt) { printf "%d\n", sum/cnt; sum=cnt=0 } print }
     /^[0-9]+$/{ sum += $1; cnt++ }' file

Выход:

pattern1
250
pattern2
166
pattern3
pattern4
4
27.01.2020, 20:54

Теги

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