0

2番目の列の一部を、その下の行に対応するシーケンスで印刷するようにファイルを変更しようとしています。awk、sed、grepを試しましたが、テキストの一部しか取得できません。

>hg19_ct_UserTrack_3545_(null) range=chr1:20802866-20802871 5'pad=0 3'pad=0 strand=+ repeatMasking=none
GATAAG
>hg19_ct_UserTrack_3545_(null) range=chr1:23866529-23866534 5'pad=0 3'pad=0 strand=+ repeatMasking=none
TTATCT
>hg19_ct_UserTrack_3545_(null) range=chr1:24345525-24345530 5'pad=0 3'pad=0 strand=+ repeatMasking=none
GATAAG

chr1 20802866 20802871  GATAAG
chr1 23866529 23866534  TTATCT
chr1 24345525 24345530  GATAAG
4

3 に答える 3

1
$ sed 'N; s/.*range=\([[:alnum:]]*\):\([[:digit:]]*\)-\([[:digit:]]*\).*\n\([[:alpha:]]*\)/\1 \2 \3 \4/' test.fa
chr1 20802866 20802871 GATAAG
chr1 23866529 23866534 TTATCT
chr1 24345525 24345530 GATAAG
于 2012-12-07T10:43:37.663 に答える
1
awk -F'[=: -]' '/^>/{s=$3" "$4" "$5; next} {print s,$0}' file
于 2012-12-07T13:48:43.347 に答える
1

別の解決策:

awk -F "[=: -]" '{getline a; print $3,$4,$5,a}' file
于 2012-12-07T11:23:24.680 に答える