使用正则表达式查找字符串,并使用 SED 将其替换为一些随机字符串

使用正则表达式查找字符串,并使用 SED 将其替换为一些随机字符串

我有一个正则表达式 MyRegularExpression,我想用 xxxxxxxxxabc 替换它,其中 a、b、c 是一些随机数。我该怎么做sed

答案1

字符串替换很简单。生成随机数是大概有可能,但阅读起来会很可怕,而且几乎不可能维护(只要看一下官方批准的样本剧本)。

我会做类似的事情

replacement="xxxxx$(printf "%05d" $RANDOM | cut -c 3-5)"
sed 's/MyRegularExpression/'"$replacement/"

这是一个有点混乱的引号,但最好使用双引号对整个 sed 主体进行转义,以防影响正则表达式中的所有特殊字符。


根据您的评论进行更新:

perl -pe 's{my_regex}{ sprintf "xxxxx%03d", int(1000*rand()) }ge' file

例子:

$ cat sample.py
def f1(a,b,c):
    x = a + b + c
    return x

def f2(a,b):
    x = a + b
    return x

$ perl -pe 's{def|return}{ sprintf "%s%03d", uc($&), int(1000*rand()) }ge' sample.py
DEF905 f1(a,b,c):
    x = a + b + c
    RETURN771 x

DEF146 f2(a,b):
    x = a + b
    RETURN199 x

相关内容