我有一個非常簡單的單行本,作業起來幾乎完美。我想在一個檔案中添加一個新的列,根據第12列和第3列的條件顯示 "非編碼或編碼"(如果第12列有子串RNA或mir-和/或第3列=="假基因,那么第1列應該顯示為非編碼,否則為編碼)。
#file
X FlyBase pseudogene 19910168 19910521 . - .gene_id "FBgn0052821"; gene_symbol "CR32821"; transcript_id "FBtr0307588"; transcript_symbol "CR32821-RB";
X FlyBase偽基因 476857 479309 . - .gene_id "FBgn0029523"; gene_symbol "CR18275"; transcript_id "FBtr0070097"; transcript_symbol "CR18275-RA"。
X FlyBase假基因 5832298 5832368 . .gene_id "FBgn0052761"; gene_symbol "tRNA:Glu-CTC-6-1Psi"; transcript_id "FBtr0070818"; transcript_symbol "tRNA:Glu-CTC-6-1Psi-RA";
X FlyBase偽基因 6361496 6362960 . - .gene_id "FBgn0016974"; gene_symbol "swaPsi"; transcript_id "FBtr0070923"; transcript_symbol "swaPsi-RA"。
X FlyBase偽基因 6361496 6363310 . - .gene_id "FBgn0016974"; gene_symbol "swaPsi"; transcript_id "FBtr0334014"; transcript_symbol "swaPsi-RB"。
X FlyBase 基因 20025099 20025170 . .gene_id "FBgn0052826"; gene_symbol "tRNA:Pro-GG-1-1";
X FlyBase基因 1482492 1482590 . - .gene_id "FBgn0044508"; gene_symbol "snoRNA:M";
X FlyBase基因 2330159 2330826 . .gene_id "FBgn0053218"; gene_symbol "lncRNA:CR33218";
X FlyBase基因3427452 3427523 . - .gene_id "FBgn0052493"; gene_symbol "tRNA:Gln-TTG-2-1";
X FlyBase基因 3819699 3819770 . .gene_id "FBgn0052785"; gene_symbol "tRNA:Gln-CTG-2-1";
X FlyBase基因 3827622 3827693 . .gene_id "FBgn0025118"; gene_symbol "tRNA:Pro-GG-3-1";
2L FlyBase基因 825969 833241 . .gene_id "FBgn0010583"; gene_symbol "dock";
2L FlyBase基因 852768 854539 . .gene_id "FBgn0020545"; gene_symbol "kraken";
2L FlyBase 基因 855337 856639 . ... gene_id "FBgn0031288"; gene_symbol "CG13949";
2L FlyBase 基因 860197 861806 . ... gene_id "FBgn0031289"; gene_symbol "CG13950";
2L FlyBase 基因 877302 878270 . ... gene_id "FBgn0002936"; gene_symbol "ninaA";
#command
awk '{ if($12 ~ /RNA/ || $12 ~ /mir-/ || $3 == "pseudogene") 1="非編碼"; else 1="編碼"; print }' a.gen-pseudogene_all_dmel-all-r6.40.gtf
該代碼可以作業,但它取代了第1列。這不是我想要的,我想在第1列之前添加這個新列(所以它成為新的第1列)。
我怎樣才能調整它呢?
uj5u.com熱心網友回復:
你可以(有效地)通過將$1轉換為something OFS $1來預置一個新列。你并沒有真正創建一個新的列($2仍然指的是原來的第二列,而$1指的是 "兩個 "新的列),但這在本例中并不重要:
awk '$1<awk '{ x = ( $12~/RNA|mir-/ || $3=="假基因" ) ? "非":"" 1美元 = x "編碼" OFS 1美元 列印 }' a.gen-pseudogene_all_dmel-all-r6.40.gtf上面的技術可以用來在任何列之前(或之后)插入。因為我們在第一列之前進行預置(或者如果我們在最后一列之后進行附加),通過避免賦值,可以使代碼更有效率:
awk '{ x = ( $12~/RNA|mir-/ || $3=="假基因" ) ? "非":"" print x "coding", $0 }' a.gen-pseudogene_all_dmel-all-r6.40.gtf轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/318134.html
標籤:
上一篇:我怎樣才能一次迭代兩行文字?
下一篇:如何在障礙物處正確同步執行緒
