Вы можете использовать расширение параметра вbash
:
cd "${0%/*/*/*}"
или еще проще вzsh
:
cd $0:h:h:h
Вы можете перейти от 2 к количеству полей(NF
)и распечатать первое поле и другое поле, разделенные табуляцией:
awk '{ for (i=2;i<=NF;i++) print $1"\t"$i }' unique.ID_all.unique.GOs2
с использованием Миллера (https://github.com/johnkerl/miller), начиная с
TRINITY_DN23871_c0_g1_i1 GO:0003735 GO:0005783 GO:0005829
TRINITY_DN6318_c1_g1_i1 GO:0004707 GO:0005524
и работает
mlr --nidx --fs tab then reshape -r "^[^1]" -o item,value then cut -x -f item input.tsv >output.tsv
у вас будет
TRINITY_DN23871_c0_g1_i1 GO:0003735
TRINITY_DN23871_c0_g1_i1 GO:0005783
TRINITY_DN23871_c0_g1_i1 GO:0005829
TRINITY_DN23871_c0_g1_i1
TRINITY_DN6318_c1_g1_i1 GO:0004707
TRINITY_DN6318_c1_g1_i1 GO:0005524
Некоторые примечания к команде:
--nidx --fs tab
, чтобы установить формат ввода и вывода reshape -r "^[^1]" -o item,value
, чтобы преобразовать входной файл из широкого в длинный cut -x -f item
для выбора выходных столбцов