Используйте awk
с несколькими разделителями.
awk -F"[\" \t]" '{print $1,$11,$14,$20,$40}' infile.txt
Предлагаемое решение:
With GNU sed
cut -f2 -d':' file | sed '1~2s/^/>/'
Выход:
>TRINITY_DN10034_c0_g1_i1
CCAGCGCCACGGAGGGCGAAGGCGAAGGCGGTGGTTTTGAACGATGAGGTGCCGCCGGTG
>TRINITY_DN10322_c0_g1_i2
GATCCGCCTTCTATAACTGGAAAAGAAGAGGATGAGGTGCCGCCGATGAGTCTACCTTCT
Сawk
:
awk -F: '{ if (NF==1) { print } else { print ">"$2 } }' file
или немного сжатее
awk -F: '{ print (NF==1) ? $1 : ">"$2 }' file
Используйте разделитель полей :
и напечатайте первое поле, если в строке только одно поле, и напечатайте >
и второе поле в противном случае.
Сsed
:
sed 's/^>[^:]\+:\([^:]\+\).*/>\1/' file
Со стандартнымsed
:
$ sed '/^>/{ s/[^:]*:/>/; s/:.*//; }' file.fa
>TRINITY_DN10034_c0_g1_i1
CCAGCGCCACGGAGGGCGAAGGCGAAGGCGGTGGTTTTGAACGATGAGGTGCCGCCGGTG
>TRINITY_DN10322_c0_g1_i2
GATCCGCCTTCTATAACTGGAAAAGAAGAGGATGAGGTGCCGCCGATGAGTCTACCTTCT
Это применяет две замены s/[^:]*:/>/
и s/:.*//
ко всем строкам в file.fa
, которые начинаются с>
(строки заголовка fasta ).
Первая замена заменит начало строки до первого символа :
включительно на >
.
Вторая замена удалит все, начиная с первого :
в результирующих данных (и второго :
в исходной строке )до конца строки.
Это оставило бы второе:
-поле с разделителями с префиксом >
.
Со стандартнымawk
:
$ awk -F ':' '/^>/ { $0 = ">" $2 } { print }' file.fa
>TRINITY_DN10034_c0_g1_i1
CCAGCGCCACGGAGGGCGAAGGCGAAGGCGGTGGTTTTGAACGATGAGGTGCCGCCGGTG
>TRINITY_DN10322_c0_g1_i2
GATCCGCCTTCTATAACTGGAAAAGAAGAGGATGAGGTGCCGCCGATGAGTCTACCTTCT
Это будет использовать :
в качестве разделителя полей, и при встрече со строкой, начинающейся с >
, она заменит полную строку на >
, за которой следует второе:
-поле с разделителем. Все строки, измененные или нет, будут напечатаны.
$ awk -F':' '{$0 = (NF>1 ? ">"$2 : $0)} 1' file
>TRINITY_DN10034_c0_g1_i1
CCAGCGCCACGGAGGGCGAAGGCGAAGGCGGTGGTTTTGAACGATGAGGTGCCGCCGGTG
>TRINITY_DN10322_c0_g1_i2
GATCCGCCTTCTATAACTGGAAAAGAAGAGGATGAGGTGCCGCCGATGAGTCTACCTTCT
$ awk -F':' '{sub(/>.*/,">"$2)}1' file
>TRINITY_DN10034_c0_g1_i1
CCAGCGCCACGGAGGGCGAAGGCGAAGGCGGTGGTTTTGAACGATGAGGTGCCGCCGGTG
>TRINITY_DN10322_c0_g1_i2
GATCCGCCTTCTATAACTGGAAAAGAAGAGGATGAGGTGCCGCCGATGAGTCTACCTTCT
Существует множество способов обращения с этим ПБМ, некоторые из них:
$ cut -d: -f2 | sed -e '$!N;s/^/>/' file
$ awk -F: '/^>/{$0 = ">" $2}1' file
$ perl -F: -pale ' s/^>\K.*/$F[1]/' file
$ sed -e '
/\n/{P;d;}
/^>/y/:/\n/
s/\n/&>/;//D
' file
Результаты
>TRINITY_DN10034_c0_g1_i1
CCAGCGCCACGGAGGGCGAAGGCGAAGGCGGTGGTTTTGAACGATGAGGTGCCGCCGGTG
>TRINITY_DN10322_c0_g1_i2
GATCCGCCTTCTATAACTGGAAAAGAAGAGGATGAGGTGCCGCCGATGAGTCTACCTTCT