如果我有一个像这样的字符串:
p1 and p11 are going to visit p111. p1 is the father of p111
我怎么能使用 sed (或任何东西,真的)用不同的值替换 p{n} 的每个实例?所以结果会是这样的:
Bob and Jane are going to visit Paul. Bob is the father of Paul
基本上,我正在寻找一种方法来告诉 sed,“准确地找到 p{n} 后跟除数字以外的任何内容,并将其替换为 $var,但不要替换 {n} 后面的内容。”
如果我做一些简单的事情
text="p1 and p11 are going to visit p111. p1 is the father of p111"
text=`echo "$text" | sed s/p1/Bob/g`
我最终将每次出现的“p1”替换为“Bob”,并且不会发生后续替换:
Bob 和 Bob1 将访问 Bob11。Bob 是 Bob11 的父亲
我最接近的是
text=`echo "$text" | sed 's/p1[^0-9]/bob/g'`
这有两个问题:它使用尾随字符(空格、标点符号),并且它不匹配行尾的 p{n}。遍历所有需要替换的内容后:
Boband Janeare 去拜访 p111 的父亲 Paul Bobis
任何人都知道如何找到我需要替换的内容,而不是插入其他变量,并且不使用尾随的非数字字符?
谢谢。