sed - 如何删除第一次出现 ";"到第一个空格/制表符之间的所有内容?

标签 sed tabs delimiter

我有一个包含许多行的文本文件,所有行的格式都相同。我想删除第一次出现“;”之间的所有文本以及第一个制表符或空格字符(它是制表符分隔的,但也可以只是空格)。

该文件如下所示:

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/

相关文章:

shell - 如何替换docker镜像中的conf文件中的文本

eclipse - 如何更改 Eclipse 以使用空格而不是制表符?

c - 在 C 中有多个定界符的 scanf

java - 正则表达式 - 文字字符串和引号之间的匹配

perl - 什么脚本可以帮助解析一组错误换行的行?

linux - 查找和替换多个文件中的文本

regex - 使用反向引用在两个模式之间添加所有行

android - 调整默认 android 标签问题

tabs - iTerm 选项卡切换顺序

Java - 使用多个分隔符时的字符串解析或 split() 错误