sed -n 'h; n; G; N; p; n; p' input.txt
Пояснение
sed
имеет два рабочих пространства -пространство удержания и пространство шаблона. Они как две переменные-var_1
и var_2
. Каждая входная строка входит в пространство шаблонов, но вы можете скопировать (, чтобы заменить все содержимое пространства хранения ), или добавить его в пространство хранения. Таким образом:
h
-копирует пространство паттерна в пространство удержания. Теперь и шаблон, и пробелы для удержания равны:AAAAA
. n
-получает следующую строку ввода в пространство шаблонов. Итак, пространство шаблонов теперь:BBBBB
. G
-добавляет новую строку и содержимое пространства удержания(AAAAA
)к пространству шаблонов, поэтому пространство шаблонов теперь BBBBB\nAAAAA
. N
-добавляет новую строку и следующую строку ввода в пространство шаблонов-BBBBB\nAAAAA\nCCCCC
p
-печатает пространство шаблона. n
-получает следующую строку ввода в пространство шаблонов, если она существует, и завершает работу в противном случае (, если был достигнут конец файла ). p
-снова печатает пространство шаблона. Выход
BBBBBBBBBB
AAAAAAAAAA
CCCCCCCC
EEEEEEEEEEE
DDDDDDDDDDD
FFFFFFFFFFF
HHHHHHHHHHH
GGGGGGGGGGG
IIIIIIIIIII