在bash中编辑文件头

时间:2018-09-30 07:55:21

标签: awk sed header edit

我有一个包含以下标头的文件。

LESlike5.fasta_LESlike5|6543350|2181116|74|Aca1|1.9e-49|167.1|567531|567602|1|1|1702592|1702805|1697592|1707805

由于标头太长,我无法在内部prokka中注释文件。因此,我希望标头如下所示:

LESlike5.fasta_1702592_1702805_1697592_1707805

我知道sed命令可能有用,但是我不能删除特殊字符'|'通过使用sed。我尝试删除sed 's/|/',但没有工作。如何编辑标题?

1 个答案:

答案 0 :(得分:2)

使用awk:使用|_作为输入字段分隔符(FS)和_作为输出字段分隔符(OFS)并首先打印( $1)和最后四列。 $NF包含最后一列。

awk 'BEGIN{FS="[|_]"; OFS="_"} {print $1,$(NF-3),$(NF-2),$(NF-1),$NF}' file

输出:

LESlike5.fasta_1702592_1702805_1697592_1707805