Мой файл имеет несколько наборов строк. Каждый набор имеет 4 строки. Строка 1-4 установлена в 1. Строка 5-8 установлена в 2 и так далее. Мне нужно напечатать первые две строки из каждого набора, то есть строки 1 и 2, строки 5 и 6 и так далее.

Содержание файла:

line 1
line 2
line 3
line 4
line 5
line 6
line 7
line 8
..
line n

2 ответа2

2
sed -n '1~4p;2~4p'

1~4p соответствует каждой 4-й строке, начиная с 1-й:

line 1
line 5
line 9
…

2~4p соответствует каждой 4-й строке, начиная со 2-й:

line 2
line 6
line 10
…

При совместном использовании они делают то, что вы хотите.

0

Я не думаю, что sed - это инструмент выбора здесь - почему бы не просто написать скрипт?

cat /path/to/infile | while true; do read l || break ; echo "$l" ; read l || break ; echo "$l" ; read l || break ; read l || break ; done > /path/to/outfile

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .