分号后删除文本

时间:2014-11-02 20:25:54

标签: linux text

我有一个包含列的文件,如下所示

chr1    899766  899766  G   T   exonic;exonic   KLHL17  .   nonsynonymous SNV;nonsynonymous SNV

我想在";"之后删除文字。在第6列和第9列中。输出应如下所示:

chr1    899766  899766  G   T   exonic  KLHL17  .   nonsynonymous SNV

有人可以提供linux命令来解决这个问题。

2 个答案:

答案 0 :(得分:0)

这将删除任何字段中;之后和之后的部分,假设字段由制表符分隔。

sed 's/;[^\t]*//g' <file>

如果您只想在第6和第9个字段中执行此操作:

perl -lne '@F=split/\t/;$F[$_]=~s/;.*// for(5,8);print join"\t",@F' <file>

答案 1 :(得分:0)

对于您想要的输入,我使用了sed

echo "chr1    899766  899766  G   T   exonic;exonic   KLHL17  .   nonsynonymous SNV;nonsynonymous SNV" | sed 's/;[a-zA-Z]* [a-zA-Z]*//g'

输出

chr1    899766  899766  G   T   exonic  KLHL17  .   nonsynonymous SNV

它仅适用于“word;word”或“word word;word word