私のLinuxコンピュータに以下のファイルがありますが、gene_id
間違っています。だから、"PB"
文字列を同じ行の文字列に置き換えたいのですgene_id
。transcript_id
$ cat try.gff
transcript 30351 32332 . + . gene_id "PB"; transcript_id "PB.1.66";
exon 30351 31677 . + . gene_id "PB"; transcript_id "PB.1.59";
exon 31758 31871 . + . gene_id "PB"; transcript_id "PB.1.40";
exon 31968 32178 . + . gene_id "PB"; transcript_id "PB.1.30";
exon 32257 32332 . + . gene_id "PB"; transcript_id "PB.1.20";
transcript 30351 32332 . + . gene_id "PB"; transcript_id "PB.28.309";
exon 30351 31677 . + . gene_id "PB"; transcript_id "PB.58.900";
exon 31758 31871 . + . gene_id "PB"; transcript_id "PB.10000.1001";
exon 31968 32178 . + . gene_id "PB"; transcript_id "PB.19897.1087541";
exon 32257 32332 . + . gene_id "PB"; transcript_id "PB.1.11";
予想される結果
transcript 30351 32332 . + . gene_id "PB.1"; transcript_id "PB.1.66";
exon 30351 31677 . + . gene_id "PB.1"; transcript_id "PB.1.59";
exon 31758 31871 . + . gene_id "PB.1"; transcript_id "PB.1.40";
exon 31968 32178 . + . gene_id "PB.1"; transcript_id "PB.1.30";
exon 32257 32332 . + . gene_id "PB.1"; transcript_id "PB.1.20";
transcript 30351 32332 . + . gene_id "PB.28"; transcript_id "PB.28.309";
exon 30351 31677 . + . gene_id "PB.58"; transcript_id "PB.58.900";
exon 31758 31871 . + . gene_id "PB.10000"; transcript_id "PB.10000.1001";
exon 31968 32178 . + . gene_id "PB.19897"; transcript_id "PB.19897.1087541";
exon 32257 32332 . + . gene_id "PB.1"; transcript_id "PB.1.11";
コードに置き換える正しいテキストを取得しました。awk -F";" '{gsub(" transcript_id ","");print $2}' try.gff | sed 's/"//g' | cut -d '.' -f 1,2
PB.1
PB.1
PB.1
PB.1
PB.1
PB.28
PB.58
PB.10000
PB.19897
PB.1
"PB"
部品を部品に交換するにはどうすればよいですかgene_id
?
ベストアンサー1
sed
すべてのUnixシステムのすべてのシェルでanyを使用してください。
$ sed 's/\(.*gene_id "\)[^"]*\(.*"\([^.]*\.[^.]*\).*\)/\1\3\2/' try.gff
transcript 30351 32332 . + . gene_id "PB.1"; transcript_id "PB.1.66";
exon 30351 31677 . + . gene_id "PB.1"; transcript_id "PB.1.59";
exon 31758 31871 . + . gene_id "PB.1"; transcript_id "PB.1.40";
exon 31968 32178 . + . gene_id "PB.1"; transcript_id "PB.1.30";
exon 32257 32332 . + . gene_id "PB.1"; transcript_id "PB.1.20";
transcript 30351 32332 . + . gene_id "PB.28"; transcript_id "PB.28.309";
exon 30351 31677 . + . gene_id "PB.58"; transcript_id "PB.58.900";
exon 31758 31871 . + . gene_id "PB.10000"; transcript_id "PB.10000.1001";
exon 31968 32178 . + . gene_id "PB.19897"; transcript_id "PB.19897.1087541";
exon 32257 32332 . + . gene_id "PB.1"; transcript_id "PB.1.11";
正規表現セクションでは、それぞれが\(
matchで構成されたキャプチャグループを起動します\)
。置換セクションでは、Everyは\<digit>
キャプチャグループの正規表現セグメントに一致する文字列を参照します。 so は\1
一致する文字列\(.*gene_id "\)
などを参照します。残りは単なる基本的な正規表現セグメントです(たとえば、.*
すべての文字のゼロ以上の繰り返しを表し、を[^"]*
除くすべての文字のゼロ以上の繰り返しを表し"
、\.
リテラルを表します.
)。