find. -name excludeme -prune -o \
\( -name '*.c' -o -name '*.h' \) -print
Помните, что И(неявный )имеет приоритет над ИЛИ(-o
). (см. также-name '*.[ch]'
)
$ awk '(NR-1) % 5 == 0 { m=$1; for (i=2; i<=NF; ++i) m=($i>m ? $i : m); print m }' file
2.14E+06
2.35E+06
2.33E+06
3.66E+06
или, с явным if
утверждением:
$ awk '(NR-1) % 5 == 0 { m=$1; for (i=2; i<=NF; ++i) if ($i > m) m = $i; print m }' file
2.14E+06
2.35E+06
2.33E+06
3.66E+06
Программа awk
использует (NR-1) % 5 == 0
для запуска блока кода для строк 1, 11, 16 и т. д. Блок находит наибольшее значение в строке и печатает его.
NR
— номер текущей записи (— номер строки по умолчанию ), а NF
— количество полей (столбцов )в текущей записи.
Если вы всегда хотите получить последний столбец , используйте гораздо более быстрый
$ awk '(NR-1) % 5 == 0 { print $NF }' file
2.14E+06
2.35E+06
2.33E+06
3.66E+06
$ awk '{max = ((max=="") || ($6 > max) ? $6 : max)} !(NR%5){print max; max=""}' file
2.14E+06
2.35E+06
3.19E+06
3.66E+06
$ perl -lane '
$F[5] > ($m //= -InF) and $m = $F[5];
$. % 5 or print, undef for $m;
' file
2.14E+06
2.35E+06
3.19E+06
3.66E+06