В bash / ksh и подобных, вы можете использовать <()
, чтобы избежать подоболочки, которая ] |
создает:
insourcable.sh :
echo hallo welt
echo hello world
echo ahoj světe
Предположим, вы хотите вставить в исходный код только строку номер два:
. <( sed -n '2 p' < insourcable.sh )
(выводит «привет, мир»)
Я не думаю, что цикл по полям — это то, что вам здесь нужно. Вместо этого просто посмотрите на номер записи (или номер записи файла, чтобы он мог работать с несколькими файлами )по модулю 5 :
.$ awk '!((FNR-1)%5) || $2 > max {x = $0; max = $2} !(FNR%5) {print x}' file
3 279
7 479
если FNR
равно 1,6,... ИЛИ $2
больше, чем текущий текущий максимум, сохранить текущую строку / максимум
если FNR
равно 5,10,... вывести текущую строку / макс.
Не awk
ответ, но для тех, кто любит инструменты оболочки, этот метод GNUsplit
работает:
split -l 5 --filter 'sort -n -k 2 | tail -1' file