Для ввода, как это (без начальных вкладки в левой части первой колонны):
184
2
P 2853263 4998463
SS
AG0001-C
T/T C/C A/A
AG0002-C
T/T C/C A/T
AG0003-C
T/T C/C A/A
AG0004-C
T/T C/C T/A
Этот сценарий должен работать с Mawk:
#!/usr/bin/awk -f
NR <= 4 || NR % 2 { print; next; }
{
rows = 0
for (i = 1; i <= NF; ++i) {
count = split($i, b, /\//)
if (count > rows) {
rows = count
}
for (j = 1; j <= count; ++j) {
key = i "|" j
a[key] = b[j]
}
}
for (i = 1; i <= rows; ++i) {
key = 1 "|" i
printf("%s", a[key])
for (j = 2; j <= NF; ++j) {
key = j "|" i
printf("\t%s", a[key])
}
print ""
}
for (i in a) {
delete a[i]
}
}
Выход:
184
2
P 2853263 4998463
SS
AG0001-C
T C A
T C A
AG0002-C
T C A
T C T
AG0003-C
T C A
T C A
AG0004-C
T C T
T C A
It shoul d работа даже с различными форматами, как это:
184
2
P 2853263 4998463
SS
AG0001-C
A/A/C/X/Y/Z T/T C/C A/A A/A/C/X A/A/B A/A/C/X/Y
AG0002-C
T/T C/C A/T
AG0003-C
T/T C/C A/A
AG0004-C
T/T C/C T/A
Выход:
184
2
P 2853263 4998463
SS
AG0001-C
A T C A A A A
A T C A A A A
C C B C
X X X
Y Y
Z
AG0002-C
T C A
T C T
AG0003-C
T C A
T C A
AG0004-C
T C T
T C A
Для входа с вкладках слева:
184
2
P 2853263 4998463
SS
AG0001-C
T/T C/C A/A
AG0002-C
T/T C/C A/T
AG0003-C
T/T C/C A/A
AG0004-C
T/T C/C T/A
Этот код
#!/usr/bin/awk -f
NR <= 4 || NR % 2 { print; next; }
{
rows = 0
for (i = 1; i <= NF; ++i) {
count = split($i, b, /\//)
if (count > rows) {
rows = count
}
for (j = 1; j <= count; ++j) {
key = i "|" j
a[key] = b[j]
}
}
for (i = 1; i <= rows; ++i) {
for (j = 1; j <= NF; ++j) {
key = j "|" i
printf("\t%s", a[key])
}
print ""
}
for (i in a) {
delete a[i]
}
}
Дал бы результат
184
2
P 2853263 4998463
SS
AG0001-C
T C A
T C A
AG0002-C
T C A
T C T
AG0003-C
T C A
T C A
AG0004-C
T C T
T C A
Прошу прощения за каждого, я допустил ошибку в том, что я хотел, чтобы мой результат был. Теперь я внесла поправки в правильный формат. – 714