用于更改 VCF 文件中所有 ID 的正则表达式

用于更改 VCF 文件中所有 ID 的正则表达式

我必须更改 VCF 文件中的所有 ID (N=2734)。它们看起来像这些例子:

TEUBPD10006_TEUBPD10006 
TEUBPD10007_TEUBPD10007
TEUBPD10008_TEUBPD10008 
.
.
. 

因此,每个 ID 都必须更改为仅包含第一部分,即: TEUBPD10006TEUBPD10007TEUBPD10008

这种情况下,如何使用Linux正则表达式一次就能搞定呢?

答案1

我不确定为什么您认为使用正则表达式是解决方案,但如果这不是严格的要求,您可以通过以下方式轻松完成此任务awk

awk -F'_' '{print $1}' /path/to/file

使用 gawk 您可以就地覆盖文件:

gawk  -i inplace -F'_' '{print $1}' /path/to/file

或者使用临时文件:

awk -F'_' '{print $1}' /path/to/file > /path/to/temp_file && mv /path/to/temp_file /path/to/file

如果你真的想要你可以添加一个正则表达式:

awk -F'_' '/.*/{print $1}' /path/to/file

但这样做是没有意义的。


或者,您可以sed与正则表达式结合使用:

sed -e 's/\(.*\)_.*/\1/g' /path/to/file

答案2

这也可以帮助:

cut -f1 -d'_' file

相关内容