如何多次删除两个字符之间的文本?

时间:2019-11-18 18:40:41

标签: regex string bash sed text-manipulation

我有一个像这样的文件:

1   GO:0000165-MAPK cascade(L=5), GO:0000186-activation of MAPKK activity(L=8), GO:0000902-cell morphogenesis(L=5)
2   GO:0000904-cell morphogenesis involved in differentiation(L=5), GO:0001932-regulation of protein phosphorylation(L=7)
3   GO:0001934-positive regulation of protein phosphorylation(L=8)
4   GO:0006468-protein phosphorylation(L=6), GO:0006793-phosphorus metabolic process(L=3), GO:0006796-phosphate-containing compound metabolic process(L=4), GO:0006950-response to stress(L=2), GO:0006996-organelle organization(L=3), GO:0007030-Golgi organization(L=4)

我想删除-之间的所有文本,仅保留代码 GO:0000000 ,并用逗号和空格隔开。

我希望我得到以下输出:

1   GO:0000165, GO:0000186, GO:0000902
2   GO:0000904, GO:0001932
3   GO:0001934
4   GO:0006468, GO:0006793, GO:0006796, GO:0006950, GO:0006996, GO:0007030

我尝试使用sed

sed 's/-.*)//g' myfile

但它仅适用于第一次出现的情况,返回

1   GO:0000165,
2   GO:0000904,
3   GO:0001934
4   GO:0006468,

有人可以帮助我吗? 谢谢(:

0 个答案:

没有答案