-4

我有一个多序列文件

>abc|d017961
sequence1......

>cdf|rhtdm9
sequence2......

>ijm|smthr12
sequence3......

>abc|d011wejr
sequence4......

>stg|eethwe77
sequence5......

我想编辑文件并希望结果文件为

>abc_ABC__d017961
sequence1......

>cdf_CDF__rhtdm9
sequence2......

>ijm_IJM__smthr12
sequence3......

>abc_ABC__d011wejr
sequence4......

>stg_STG__eethwe77
sequence5......

谢谢!

4

2 回答 2

1

您可以将输入字段分隔符 (FS) 定义为|,将输出字段分隔符 (OFS) 定义为_,然后使用该toupper()函数。

全部一起:

$ awk 'BEGIN{OFS="_"; FS="\|"}{print $1,toupper($1),OFS,$2}' file
abc_ABC___d017961 sequence1......
cdf_CDF___rhtdm9 sequence2......
ijm_IJM___smthr12 sequence3......
abc_ABC___d011wejr sequence4......
stg_STG___eethwe77 sequence5......
于 2013-09-25T11:14:33.980 回答
1
perl -pe 's/ (\w+) \| /$1_\U$1\E__/x' file

或者

perl -lpe '$_ = "$1_\U$1\E__$2" if / (\w+) \| (\w+)/x' file
于 2013-09-25T11:28:43.353 回答