Bash читает N строк из файла, начиная со строки Z - PullRequest
0 голосов
/ 07 мая 2019

У меня есть текстовый файл:

34
3467uy
56ytyyu
And so on

Я хочу прочитать из этого файла N строк, начинающихся со строки Z. Я знаю, как читать первые N строк с (head -n N) или последние с tail. Теперь я знаю, как читать строку Z до конца файла с помощью tail. Но я не могу найти, как читать конкретную сумму, начиная с конкретной строки. Помогите!

Ответы [ 4 ]

2 голосов
/ 07 мая 2019

Это можно сделать с помощью sed.Например, чтобы выдать строки с 10 по 20 в файл:

sed -n '10,+10p' a_file
1 голос
/ 07 мая 2019

С GNU sed:

seq 1 10 | sed '2,+3!d'

Вывод:

2
3
4
5

С man sed:

addr1,+N: будет соответствовать addr1 иN строк после адреса 1.

1 голос
/ 07 мая 2019

Использование awk: ниже приведен пример печати от строки 3 до строки 5 (3 + 2 строки). Задайте переменные start_line и buffer для печати строки, начинающейся с start_line плюс buffer больше строк ,

awk -vstart_line=3 -vbuffer=2 'NR>=start_line && NR<=start_line+buffer' file
1 голос
/ 07 мая 2019

Труба tail на выходе head:

<code>tail -n +</code><i>Z file</i><code> | head -n </code><i>N</i>

Например:

$ seq 100 | tail -n +15 | head -n 5
15
16
17
18
19
...