Unix 如何使用特定的';中点';

Unix 如何使用特定的';中点';,unix,awk,sed,Unix,Awk,Sed,我正在寻找一种在UNIX中简单地更改序列头名称的块顺序的方法 我现在拥有的序列名称是: >PIENAPT00000000258_pienapg00000000172 但我需要: >pienapg00000000172_PIENAPT00000000258 我试图用sed来实现这一点,但意识到这不是我要走的路。但不幸的是,目前还没有找到解决办法。有人能帮我吗 sed -E 's/PIENAPT.+\_pienapg.+/pienapg.+\_PIENAPT.+//' 请您具体使

我正在寻找一种在UNIX中简单地更改序列头名称的块顺序的方法

我现在拥有的序列名称是:

>PIENAPT00000000258_pienapg00000000172
但我需要:

>pienapg00000000172_PIENAPT00000000258
我试图用sed来实现这一点,但意识到这不是我要走的路。但不幸的是,目前还没有找到解决办法。有人能帮我吗

sed -E 's/PIENAPT.+\_pienapg.+/pienapg.+\_PIENAPT.+//' 

请您具体使用
sed
尝试以下内容

sed 's/\([^_]*\)\(_\)\(.*\)/\3\2\1/'  Input_file
或者,如果输入文件的行开头有
,由于引号标记而不清楚,请尝试以下操作

sed 's/\(^>\)\([^_]*\)\(_\)\(.*\)/\1\4\3\2/'  Input_file
awk 'BEGIN{FS=OFS="_"} {print substr($1,1,1)$2,substr($1,2)}' Input_file
或者根据@potong sir的评论,尝试:

sed -E 's/>(.*)_(.*)/>\2_\1/'  Input_file


相信我,使用
awk时这应该很容易

awk 'BEGIN{FS=OFS="_"} {print $2,$1}'  Input_file
或者,如果输入文件的行开头有
,由于引号标记而不清楚,请尝试以下操作

sed 's/\(^>\)\([^_]*\)\(_\)\(.*\)/\1\4\3\2/'  Input_file
awk 'BEGIN{FS=OFS="_"} {print substr($1,1,1)$2,substr($1,2)}' Input_file

请您具体使用
sed
尝试以下内容

sed 's/\([^_]*\)\(_\)\(.*\)/\3\2\1/'  Input_file
或者,如果输入文件的行开头有
,由于引号标记而不清楚,请尝试以下操作

sed 's/\(^>\)\([^_]*\)\(_\)\(.*\)/\1\4\3\2/'  Input_file
awk 'BEGIN{FS=OFS="_"} {print substr($1,1,1)$2,substr($1,2)}' Input_file
或者根据@potong sir的评论,尝试:

sed -E 's/>(.*)_(.*)/>\2_\1/'  Input_file


相信我,使用
awk时这应该很容易

awk 'BEGIN{FS=OFS="_"} {print $2,$1}'  Input_file
或者,如果输入文件的行开头有
,由于引号标记而不清楚,请尝试以下操作

sed 's/\(^>\)\([^_]*\)\(_\)\(.*\)/\1\4\3\2/'  Input_file
awk 'BEGIN{FS=OFS="_"} {print substr($1,1,1)$2,substr($1,2)}' Input_file

使用
作为带awk的字段分隔符:

awk 'BEGIN{FS="[>_]"}{print ">" $3 "_" $2}' file
输出:

>pienapg00000000172_PIENAPT00000000258 >pienapg00000000172\U PIENAPT00000000258
使用
作为带awk的字段分隔符:

awk 'BEGIN{FS="[>_]"}{print ">" $3 "_" $2}' file
输出:

>pienapg00000000172_PIENAPT00000000258 >pienapg00000000172\U PIENAPT00000000258
也许
sed-E的/>(.*)\u(.*)/>\ 2\u1/'文件
会更清晰?@poton,谢谢你,现在在我的帖子中添加了这个解决方案,干杯。也许
sed-E的/>(.*)\u(.*)/>\ 2\u1/'文件
会更清晰?@poton,谢谢,现在在我的帖子中添加了这个解决方案,干杯。