使用linux命令修改列中的文本

使用linux命令修改列中的文本,linux,text,text-files,Linux,Text,Text Files,我有一个以制表符分隔的文件,其列如下所示 chr1 899766 899766 G T exonic;exonic KLHL17 . nonsynonymous SNV;nonsynonymous SNV 我想删除第6列和第9列“;”之后的文本。输出应该如下所示: chr1 899766 899766 G T exonic KLHL17 . nonsynonymous SNV 有人能给linux命令来解决这个问题吗。它应该只删除指定列中

我有一个以制表符分隔的文件,其列如下所示

 chr1    899766  899766  G   T   exonic;exonic   KLHL17  .   nonsynonymous SNV;nonsynonymous SNV
我想删除第6列和第9列“;”之后的文本。输出应该如下所示:

chr1    899766  899766  G   T   exonic  KLHL17  .   nonsynonymous SNV

有人能给linux命令来解决这个问题吗。它应该只删除指定列中“;”之后的所有内容。

您可以使用以下
sed
命令:

sed 's/;[^\t]\+//g' your-log-file > new-file-name
这意味着“删除分号后直到(但不包括)下一个选项卡的所有内容”。输出将转到
新文件名
。如果要在位编辑日志文件(一旦确定命令按您所希望的方式工作,您可以执行以下操作:

sed -i 's/;[^\t]\+//g' your-log-file

您也可以使用
awk
,尽管我对该程序不太熟悉。这里是一个简要概述:。

sed
awk
基本上就是为此而设计的。感谢您的时间。不幸的是,上面的sed命令没有完成任务。我使用的是
sed(GNU-sed)GNU bash上的4.2.2
,版本4.3.30(在Arch Linux上)。您使用的是什么版本的东西?我在mac os上使用它。命令运行时没有任何错误,但输出保持不变。请尝试在
+
之前删除反斜杠。您好,我尝试在+之前删除反斜杠,但运气不佳。输出保持不变。