我有一个包含列的文件,如下所示
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 '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
”