linux - 删除第一个冒号和第一个制表符之间的所有内容

标签 linux bash sed

我有这样的行:

MSTRG.203.1_294_561:MSTRG.203:nc:376:66.2526979530472:39.7492003264262  2   223 4   no

我想删除第一个冒号和第一个制表符之间的所有内容,因此结果应该如下所示:

MSTRG.203.1_294_561 2   223 4   no

有没有办法用 sed 做到这一点?我尝试了很多不同的方法,但没有一种方法很接近。谢谢!

最佳答案

第 1 种解决方案:如果您的 Input_file 与所示示例相同,则以下内容可能对您有帮助。

awk -F':| ' '{print $1,$9,$12,$13,$16}'  Input_file

输出如下。

MSTRG.203.1_294_561 2 223 4 no

解决方案 2: 或比前一个更短。

awk '{sub(/:.*/,"",$1)} 1'  Input_file

解决方案 3: 这里也有一个 sed 解决方案。

sed 's/\([^:]*\)\([^ ]*\)\(.*\)/\1\3/'  Input_file

关于linux - 删除第一个冒号和第一个制表符之间的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46685974/

相关文章:

bash - 如何使用 Terraform 将文件夹/文件从 Git 存储库上传到 S3 存储桶?

awk - 将模式打印到单个 awk 或 sed 命令中的优雅方法

linux - Grep/awk 基于定义模式的单行或多行(从模式开始并在定义模式结束)

linux - 什么是接口(interface)标识符

在尝试写入之前检查管道是否损坏?

linux - 使用 awk 格式化文本

bash - 使用 sed 将 "="之前的所有字符大写

linux - Bash递归捕获命令输出

regex - 在标记字符之后选择具有 n 个相同字段的行

linux - Bash 变量始终为空