[英]remove extra characters using awk command
我想從此文件生成一個新文件,但在第二列中,我希望基因版本基本上不存在任何數字。 這是文件內容:
> chr gene_id gene_name start end gene_type
1 ENSG00000223972.4 DDX11L1 11869 14412 pseudogene
1 ENSG00000227232.3 WASH7P 14363 29806 pseudogene
>
>
> The output should look like:
chr gene_id gene_name start end gene_type
1 ENSG00000223972 DDX11L1 11869 14412 pseudogene
1 ENSG00000227232 WASH7P 14363 29806 pseudogene
我試過這個命令: sed $2 's/ *..*//' gene_annot.parsed.txt > gene1.txt
在最簡單的可能變體中:
awk '{gsub(/\.[0-9]+ /, " ", $0)}1' genes
> chr gene_id gene_name start end gene_type 1
> ENSG00000223972 DDX11L1 11869 14412 pseudogene 1
> ENSG00000227232 WASH7P 14363 29806 pseudogene 1
> ENSG00000243485 MIR1302-11 29554 31109 antisense 1
> ENSG00000221311 MIR1302-11 30366 30503 miRNA 1
> ENSG00000237613 FAM138A 34554 36081 protein_coding 1
> ENSG00000240361 OR4G11P 62948 63887 pseudogene 1
> ENSG00000186092 OR4F5 69091 70008 protein_coding
是否應該(在文件的更下方)有其他帶有.
在其他領域,這可能會產生不良結果。
假設.
在第二列之前永遠不會出現,您可以使用 GNU sed
如下,讓file.txt
內容
> chr gene_id gene_name start end gene_type
1 ENSG00000223972.4 DDX11L1 11869 14412 pseudogene
1 ENSG00000227232.3 WASH7P 14363 29806 pseudogene
然后
sed 's/\.[0-9]*//' file.txt
output
> chr gene_id gene_name start end gene_type
1 ENSG00000223972 DDX11L1 11869 14412 pseudogene
1 ENSG00000227232 WASH7P 14363 29806 pseudogene
說明:每行替換文字.
(注意\
是必需的,因為.
對於 GNU sed
具有特殊含義)后跟零個或多個( *
)數字( [0-9]
)使用空字符串(即刪除它)一次。
如果您需要以任何價格使用 GNU AWK
,那么要獲得相同的效果
awk '{sub(/\.[0-9]*/,"");print}' file.txt
使用awk
它可能是:
awk 'NR > 1 && index($2,".") {sub(/\.[[:digit:]]*/,"",$2)} 1' file
> chr gene_id gene_name start end gene_type
1 ENSG00000223972 DDX11L1 11869 14412 pseudogene
1 ENSG00000227232 WASH7P 14363 29806 pseudogene
NR > 1
並確保 field2 包含點字符,即index($2,".")
。1
。$ awk '{sub(/\..*/,"",$2)} 1' file
chr gene_id gene_name start end gene_type
1 ENSG00000223972 DDX11L1 11869 14412 pseudogene
1 ENSG00000227232 WASH7P 14363 29806 pseudogene
或者,如果您更喜歡視覺 alignment:
$ awk '{sub(/\..*/,"",$2)} 1' file | column -t
chr gene_id gene_name start end gene_type
1 ENSG00000223972 DDX11L1 11869 14412 pseudogene
1 ENSG00000227232 WASH7P 14363 29806 pseudogene
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.