删除单词模式中的字符

删除单词模式中的字符

p.G345L我的句子中的单词具有诸如and之类的模式p.X31Z。我需要删除p.所以我得到G345LX31Z

答案1

不确定你用什么来界定它,但你可以轻松地通过 sed 进行管道传输。对于 的 GNU 实现sed,在模式匹配中 '\b' 将表示单词边界,您可以使用它来确保您不会选取句子的一部分,例如“stop”。

$ cat file
p.G345L sentence stop.  p.X31Z part of another sentence
$ sed 's/\bp\.//g' file 
G345L sentence stop.  X31Z part of another sentence

答案2

如果该模式p.后跟一个大写字母,后跟一系列一个或多个十进制数字,后跟一个大写字母,那么这将是(POSIXly):

sed 's/p\.\([[:upper:]][[:digit:]]\{1,\}[[:upper:]]\)/\1/g'

答案3

您可以通过多种方式做到这一点。

perl

$ echo "p.G345L and p.X31Z" | perl -pe 's/p\.//g'
G345L and X31Z

sed

$ echo "p.G345L and p.X31Z" | sed 's/p\.//g'
G345L and X31Z

相关内容