如何使用 sed 查找字符串并替换不同行上的另一个字符串?

如何使用 sed 查找字符串并替换不同行上的另一个字符串?

我有一个这样的文件:

BEGIN
Name "TIPO_RECORD"
SqlType "12"
         Precision "255"
Name "Test"
         SqlType "12"
         Precision "255"
Name "xxxx"
         SqlType "12"
         Precision "255"
Name "Test"
         SqlType "12"
         Precision "255"
END

我需要一个脚本来查找字符串“TEST”,然后将其后面的第一个字符串“PRECISION”替换为“TRY”。

答案1

假设您想要替换示例中的文本,您可以执行以下操作:

sed '/Name "Test"/ {n;n;s/Precision/Try/;}'

要做到不区分大小写,请尝试:

sed '/Name "[Tt][Ee][Ss][Tt]"/ {n;n;s/[Pp][Rr][Ee][Cc][Ii][Ss][Ii][Oo][Nn]/Try/;}'

或者更简单地使用 GNU sed

sed '/Name "Test"/I {n;n;s/precision/Try/i;}'

相关内容