разделить содержимое определенного столбца с переменным количеством строк

Вы можете использовать расширение параметра вbash:

cd "${0%/*/*/*}"

или еще проще вzsh:

cd $0:h:h:h
1
25.09.2019, 23:39
2 ответа

Вы можете перейти от 2 к количеству полей(NF)и распечатать первое поле и другое поле, разделенные табуляцией:

awk '{ for (i=2;i<=NF;i++) print $1"\t"$i }' unique.ID_all.unique.GOs2
1
28.04.2021, 23:29

с использованием Миллера (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для выбора выходных столбцов
0
28.04.2021, 23:29

Теги

Похожие вопросы