Regex sed awk:替换与字符串B匹配的行中的字符串A

Regex sed awk:替换与字符串B匹配的行中的字符串A,regex,awk,replace,sed,Regex,Awk,Replace,Sed,我试图替换包含另一个字符串B的行中的字符串a,必须找到该字符串(a和B之间有可变内容,anyfile.html)。 例如: 与 对不起,我的第一个问题没有正确转义;我想现在应该更清楚了…我假设您有一个静态输入,其中换行符以您想要的方式分布。就像肯特评论的那样,这很容易打破 下面是一个Perl单行程序: perl -pe 'if (/1<\/a>/) { s/font-size: 14px;">/font-size: 14px; background-color: rgb(51,

我试图替换包含另一个字符串B的行中的字符串a,必须找到该字符串(a和B之间有可变内容,anyfile.html)。 例如:


对不起,我的第一个问题没有正确转义;我想现在应该更清楚了…

我假设您有一个静态输入,其中换行符以您想要的方式分布。就像肯特评论的那样,这很容易打破

下面是一个Perl单行程序:

perl -pe 'if (/1<\/a>/) { s/font-size: 14px;">/font-size: 14px; background-color: rgb(51, 204, 255);">/ }' yourfile.html
perl-pe'if(/1/){s/font-size:14px;“>/font-size:14px;背景色:rgb(51204255);“>/}”yourfile.html

听起来这正是您需要的(使用GNU awk作为第三个参数来
匹配()
):

$cat tst.awk
开始{split(“rgb(51234567)rgb(52345678)rgb(53456789)”,m)}
匹配($0,/(字体大小:14px;)(“>
字体大小:14px;“>
字体大小:14px;“>
字体大小:14px;“>
$awk-f tst.awk文件 字体大小:14px;背景颜色:rgb(51234567);“>
字体大小:14px;背景颜色:rgb(53456789);“>
字体大小:14px;背景颜色:rgb(52345678);“>
字体大小:14px;背景颜色:rgb(53456789);“>

但我必须自己编写可测试的输入,因为您没有提供代表性的输入集,所以这只是一个猜测,您可能需要自己对其进行处理,以了解实际输入的样子。

您知道html代码可能会被拆分成行,对吗?然后您就知道使用regex(awk,sed…)处理html的风险了A和B应该是什么?你们的“可变内容”是什么?你们似乎试着插入一些东西——我没有看到任何替代品……到目前为止你们试过什么?
font-size: 14px; background-color: rgb(51, 204, 255);"><a href="differentfilenames.html">1</a><br>
font-size: 14px;">
font-size: 14px; background-color: rgb(51, 204, 255);">
perl -pe 'if (/1<\/a>/) { s/font-size: 14px;">/font-size: 14px; background-color: rgb(51, 204, 255);">/ }' yourfile.html
$ cat tst.awk
BEGIN { split("rgb(51,234,567) rgb(52,345,678) rgb(53,456,789)",m) }
match($0,/(font-size: 14px;)("><a href="differentfilenames.html">([[:digit:]]+)<\/a><br>)/,a) {
    print a[1], "background-color:", m[a[3]] ";" a[2]
}

$ cat file
font-size: 14px;"><a href="differentfilenames.html">1</a><br>
font-size: 14px;"><a href="differentfilenames.html">3</a><br>
font-size: 14px;"><a href="differentfilenames.html">2</a><br>
font-size: 14px;"><a href="differentfilenames.html">3</a><br>

$ awk -f tst.awk file
font-size: 14px; background-color: rgb(51,234,567);"><a href="differentfilenames.html">1</a><br>
font-size: 14px; background-color: rgb(53,456,789);"><a href="differentfilenames.html">3</a><br>
font-size: 14px; background-color: rgb(52,345,678);"><a href="differentfilenames.html">2</a><br>
font-size: 14px; background-color: rgb(53,456,789);"><a href="differentfilenames.html">3</a><br>