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