用 sed 脚本替换字符串

Replace a string with sed script

输入:

Proc Natl Acad Sci U S A. 2014 May 27;111(21):7819-24. doi: 10.1073/pnas.1400586111. Epub 2014 May 13.

期望的输出:

Proc Natl Acad Sci U S A. 2014 May 27;111(21):7819-24.

我尝试了什么:

sed 's/doi: *//' 

使用

sed 's/doi: .*//' 

在您尝试的模式中,* 适用于它之前的 space,因此 doi: 后跟任意数量的 space 被删除,并且之后的事情仍然存在。

相比之下,

.* 匹配任意数量的任意字符(因为正则表达式中的 . 匹配任何字符),而 doi: .* 匹配 doi: 后跟a space 然后是所有字符,直到行尾。