我有一个带有列的制表符分隔文件,如下所示。
chr1 899766 899766 G T exonic;exonic KLHL17 . nonsynonymous SNV;nonsynonymous SNV
我想在“;”之后删除文字在第6列和第9列中。输出应如下所示:
chr1 899766 899766 G T exonic KLHL17 . nonsynonymous SNV
有人可以给出一个linux命令来解决这个问题。它应该删除“;”之后的所有内容仅在指定的列中。
答案 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/。