Вы также можете использовать xargs
, если хотите.
find./ -name '-file0*' | xargs cat
Как отмечалось выше, ни один из ваших файлов не имеет расширения .txt
. Если бы они это сделали, вы могли бы заменить -file0*
на*.txt
Используя инструменты 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.
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