tail -f, но только каждую 1000-ю строку

tail -f myfile.log

это очень хорошо, но если у вас большой файл, вы можете захотеть отобразить только каждую n-ю строку.

Таким образом, вывод покажет строку 1, строку 1001, строку 2001 и так далее.

Возможно ли это, или вывод должен быть связан с sed, awk или чем-то еще?


person gies0r    schedule 23.02.2020    source источник


Ответы (3)


Используя авк:

$ awk 'NR%1000==1'

Образец каждые 3:

$ seq 1 10 | awk 'NR%3==1'
1
4
7
10
person James Brown    schedule 23.02.2020

вы можете использовать приведенную ниже команду, чтобы получить его

$> seq 1 4000 | awk 'NR%1000-1==0' # or awk 'NR%1000==1'
1
1001
2001
3001

$> seq 1 4000  >> file
$> cat file |   awk 'NR%1000-1==0'
1
1001
2001
3001

$> tail -f -n 40000 file  | awk 'NR%1000-1==0'                                                                                                                                                  (2.6.3)
1
1001
2001
3001
person Al-waleed Shihadeh    schedule 23.02.2020

С GNU-седом:

seq 1 4000 | sed -nu '1~1000p'

Выход:

1
1001
2001
3001
person Cyrus    schedule 23.02.2020