2017-06-22 80 views
0

我有一个包含这样的句子文件:如何删除所有符号以创建制表符分隔文件?

>Mouse|chr1:52136377-52136981 | element 1 | negative 
    >Mouse|chr15:52166424-52166999 | element 2 | negative 

我想要的输出为制表符分隔这样的:

Mouse chr1 52136377 52136981 element 1 negative 
    Mouse chr15 52166424 52166966 element 2 negative 

这对我来说非常棘手,因为我非常新正则表达式和sed。我尝试使用sed删除所有符号,如: , | , - , and >,并插入一个选项卡,但它不起作用。

谢谢你的帮助!

+0

请张贴'sed'尝试。 –

+0

'perl -lne'print join“\ t”,split \ \ W + /'file' –

+0

'perl -F \\ W + -le'print join“\ t”,@ F'file' –

回答

0

尝试更换这样的:有一个\t[>|:\- ]+ ...

+0

OP在sed中使用这种模式可能会有问题(这在POSIX中是无效的)。 –

+0

哪部分无效? –

+0

在BRE POSIX中,'+'匹配文字'+',它们不支持括号表达式中的转义序列。所以,在括号表达式中间的'-'会形成一个无效范围(ERE和BRE)。 –

1

扩展的sed方法:

sed -E 's/ *[>\|:-] */\t/g' file 

输出:

Mouse chr1 52136377 52136981 element 1 negative 
    Mouse chr15 52166424 52166999 element 2 negative 

  • [>\|:-] - 包含所有关键字符的字符类来代替