我最近不得不处理大量下载的文件,其中包括许多烦人的"[...]“在文本中。如下所示:
从电纺膜/支架中局部传递多种生长因子例如血小板衍生生长因子和BMP 2.已被证明能提高体外41的细胞活性以及体内47的骨再生。由于篇幅的限制,作者建议读者参考最近发表的关于这个主题的尚未发表的评论来了解更多的细节34-36。
期望产出:
从电纺膜/支架中局部传递多种生长因子例如血小板衍生生长因子和BMP 2.已被证明能提高体外细胞活性和体内骨再生。由于篇幅有限,作者建议读者参考最近发表的关于这一主题的尚未发表的评论来了解更多细节。
如何使用tr或sed删除这个"[digits]"?我试过了
tr -d '[\*]'
sed 's/[[*]]//g'但两者都不起作用。
我应该在哪里转义,如果不删除括号中的其他字符(如例如血小板衍生生长因子和BMP 2. ),如何删除这些字符?
发布于 2021-02-25 17:42:36
试试这个:
# it also removes the extra spaces
$ sed -e 's/\[[0-9–]*\]//g;s/[[:blank:]]\+/ /g;s/[[:blank:]]\([\.?!:;,]\+\)/\1/g' file输出:
从电纺膜/支架中局部传递多种生长因子(如血小板衍生生长因子和骨形态发生蛋白)已被证明能提高体外细胞活性和体内骨再生。由于篇幅的限制,作者建议读者参考最近发表的关于这一主题的尚未发表的评论来了解更多细节。
发布于 2021-02-25 17:42:54
您需要匹配[,然后是一个或多个数字,然后是]。
[和]在正则表达式中被认为是特殊字符,因此必须用前导反斜杠转义它们。[0-9],也可以表示为[[:digit:]]。+表示一个或多个数字所以
sed -E 's/\[[[:digit:]]+\]//g'要匹配一个数字范围,例如在您的示例中的[34–36],您需要稍微扩展模式,即[数字-- –数字]。(请注意,这个破折号似乎不是一个标准的连字符,而是稍长的恩达什,甚至可能是埃姆达什。)
sed -E 's/\[[[:digit:]]+–[[:digit:]]+\]//g'为了同时匹配这两个数字,您需要将破折号和第二个数字放在括号( . )中,然后用?声明它。
sed -E 's/\[[[:digit:]]+(–[[:digit:]]+)?\]//g'我一直使用sed -E来表示扩展正则表达式(ERE),这意味着更多字符是隐式特殊的,不需要用反斜杠标记。
https://unix.stackexchange.com/questions/636399
复制相似问题