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

时间:2014-11-03 20:51:59

标签: 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命令来解决这个问题。它应该删除“;”之后的所有内容仅在指定的列中。

1 个答案:

答案 0 :(得分:0)

您可以使用以下sed命令:

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

这意味着"删除分号后的所有内容,直至(但不包括)下一个标签"。输出将转到new-file-name。如果要在就地编辑your-log-file(一旦确定命令按照您希望的方式工作,您可以执行以下操作:

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

你也可以使用awk,虽然我不熟悉那个程序。以下是简要概述:http://www.cyberciti.biz/faq/howto-delete-word-using-sed-under-unix-linux-bsd-appleosx/