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 …
При совместном использовании они делают то, что вы хотите.
Мой файл имеет несколько наборов строк. Каждый набор имеет 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
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 …
При совместном использовании они делают то, что вы хотите.
Я не думаю, что 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