Awk
решение для фиксированного "вхождения поля по убыванию" от 1-го к 3-му полю:
awk 'NR == 1 {
group1 = $1; group2 = $2; group3 = $3
}
NR == 2 {
group1 = group1 OFS $1;
group2 = group2 OFS $2;
group3 = group3 OFS $3
}
NR > 2 {
if (NF == 3) { cl1[NR - 2] = $1 }
if (NF >= 2) { cl2[NR - 2] = $(NF - 1) }
cl3[NR - 2] = $(NF)
}
END {
traverse(cl1, group1);
traverse(cl2, group2);
traverse(cl3, group3)
}
function traverse(cl, gr) {
len = length(cl);
for (i = 1; i <= len; i++) {
print cl[i], gr
}
}' OFS='\t' file
Выход:
g1 cluster01 typeA
g2 cluster01 typeA
g3 cluster01 typeA
g4 cluster02 typeA
g5 cluster02 typeA
g6 cluster02 typeA
g7 cluster02 typeA
g8 cluster03 typeB
g9 cluster03 typeB
g10 cluster03 typeB
g11 cluster03 typeB
g12 cluster03 typeB
ПУТЬ может быть определен ранее в файле или в другом файле, который источник при запуске интерактивной оболочки входа, такой как.profile, /etc/login.defs или /etc/environment. Независимо от того, где это определено, вы также можете определить новое значение PATH в любом месте.bashrc, которое вы хотите, для пример в конце, при условии, что перед:
нетreturn
PATH=/dir:"$PATH"
Нет необходимости export
в уже экспортированной переменной. Ты также можно рассмотреть возможность сохранения вашего.bashrc в репозитории Git, чтобы иметь возможность отслеживать изменения и легко возвращаться к предыдущей рабочей версии.