Вы можете использовать awk
следующим образом:
awk 'NR%2 { printf "%s%s", $0, (NR+1)%6 ? " " : "\n" }' < test
Объяснение:
Вам необходимо знать эти две вещи о awk
:
синтаксис condition { commands }
, где commands
выполняется, если condition
истинно (не ноль).
NR
- это номер текущей записи (то есть номер строки), начиная с 1.
Здесь условие равно NR%2
, что не являетсяноль для нечетных линий.Таким образом, команда выполняется только для нечетных строк, которые вы хотите напечатать.Строки с четными номерами отбрасываются без уведомления.
printf
будет печатать каждую нечетную строку, за которой следует либо пробел, либо перевод строки.Ваш ввод повторяется каждые 6 строк, и вы хотите новую строку после строк 5, 11, 17, и т. Д. .Вы можете добавить 1 к каждому из этих чисел, чтобы оно делилось на 6, поэтому для этих чисел формула (NR+1)%6
равна 0.
Таким образом, (NR+1)%6 ? " " : "\n"
вычисляет пробел для строк 1 и 3, ановая строка для строки 5. Затем она повторяется для 7, 9 и 11;и т. д.