Вы можете использовать awk
для разделения каждого блока на отдельные файлы, а затем paste
их вместе (ниже предполагается, что между каждым списком всегда есть пустые строки ).
awk '/^$/ {N++;next}{print >"file"N}' infile.txt
paste file*
Также вы можете переместить команду paste
в awk
.
awk '/^$/ {N++;next}{print >"file"N} END{system("paste file*")}' inile.txt
Выходной сигнал:
List A List B List C
hi Hi Hello
hello Yes
hw r u
чтобы получить красивый отступ при изменении длины строк, как показано ниже:
list A
hi
hello
hw r u
List B
Hi this is list B
Yes
List C
Hello, this is list C
вы можете сделатьpaste file* |column -s $'\t' -tn
и получите результат:
list A List B List C
hi Hi this is list B Hello, this is list C
hello Yes
hw r u
Это то, что вы ищете?
$ cat file
A
36
B
57
C
11
$ awk '{printf "%s%s", $0, (NR%2 ? OFS : ORS)}' file
A 36
B 57
C 11