我有一个包含许多行的文本文件,所有行的格式都相同。我想删除第一次出现“;”之间的所有文本以及第一个制表符或空格字符(它是制表符分隔的,但也可以只是空格)。
该文件如下所示:
Q5F5R2 Bacteria
Q5F9Q8 Bacteria
Q5F850 Bacteria
Q5F851 Bacteria
Q5F7X1;Q5F832;Q5822 Bacteria
Q5F848 Bacteria
Q5F847 Bacteria
Q5FAF5 Bacteria
Q5F881;Q9RF92 Bacteria
Q5F5F3 Bacteria
我只想保留第一个入藏号,使其看起来像这样:
Q5F5R2 Bacteria
Q5F9Q8 Bacteria
Q5F850 Bacteria
Q5F851 Bacteria
Q5F7X1 Bacteria
Q5F848 Bacteria
Q5F847 Bacteria
Q5FAF5 Bacteria
Q5F881 Bacteria
Q5F5F3 Bacteria
我到处寻找解决方案,但没有任何效果,主要是 sed,例如: sed 's/\;.*//' 但它没有做任何事情。
救命!
附加评论:
我想您也可以将第一列截断为仅前 6 个字符。但我不知道该怎么做。
最佳答案
一个awk
解决方案:
awk '{sub(/;[^\t]*\t/,"\t")}1' file
Q5F5R2 Bacteria
Q5F9Q8 Bacteria
Q5F850 Bacteria
Q5F851 Bacteria
Q5F7X1 Bacteria
Q5F848 Bacteria
Q5F847 Bacteria
Q5FAF5 Bacteria
Q5F881 Bacteria
Q5F5F3 Bacteria
关于sed - 如何删除第一次出现 ";"到第一个空格/制表符之间的所有内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19860629/