Не совсем элегантно, но это возможно с GNU sed
:
h # save in hold
s_^[0-9]\{1,\} __ # remove first column
s_3_A_g # change 3 and 4 to A and B
s_4_B_g
x # swap with hold
s_ .*$__ # remove everything but first column
G # append from hold
s_\n_ _ # join lines (with space)
h # save in hold space again
s_A_2_g # first output -> 2, 1
s_B_1_g
p # print first line
g # restore from hold
s_A_1_g # second output -> 1, 2
s_B_2_g
# end of script, second line printed automatically
Это сохраняет первый столбец (так что он не будет изменен) и строит версию строки со всеми оставшимися 3s и 4s изменились на As и Bs соответственно. Затем эта линия используется для обоих выходов, сначала с 2
и 1
, затем наоборот.
sed -f script.sed input > output
Предполагается, что ваш ввод содержит только числа и пробелы, т.е. A
и B
там еще не отображаются.