0

我正在尝试修改文件以打印第二列的一部分,并在其下方的行上显示相应的序列。我试过 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 "[=: -]" '{getline a; print $3,$4,$5,a}' file
于 2012-12-07T11:23:24.680 回答
1
awk -F'[=: -]' '/^>/{s=$3" "$4" "$5; next} {print s,$0}' file
于 2012-12-07T13:48:43.347 回答