我必须更改 VCF 文件中的所有 ID (N=2734)。它们看起来像这些例子:
TEUBPD10006_TEUBPD10006
TEUBPD10007_TEUBPD10007
TEUBPD10008_TEUBPD10008
.
.
.
因此,每个 ID 都必须更改为仅包含第一部分,即: TEUBPD10006
、TEUBPD10007
等TEUBPD10008
。
这种情况下,如何使用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