2017-06-22 81 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 

  • [>\|:-] - 包含所有關鍵字符的字符類來代替