0

我有以下脚本:

脚本.sh:

#!/bin/bash

FileName=$1;
awk '
/Import()/
{
    while (sub(/\$requestedMessage/, "bar") == 0)
    {
        print;
        getline;
    }
}
1' > file.tmp $FileName

以及以下文件:

文件:

function FunctionA()
{
    message=$requestedMessage
}

function FunctionB()
{
    message=$requestedMessage
}

这个想法是打电话

./script.sh file

message=$requestedMessage并将函数中的变量替换FunctionB()message=bar但仅在FunctionB()而不是FunctionA()

我对 AWK 很陌生,我似乎不明白我做错了什么。

谢谢,

4

1 回答 1

1
awk -v RS= -v ORS='\n\n' '
/FunctionB\(\)/ {
    sub(/\$requestedMessage/, "bar")
}
1' "$FileName" > file

也许这更像你的想法:

awk '
/^function/ { inTarget = (/FunctionB\(\)/ ? 1 : 0) }
inTarget { sub(/\$requestedMessage/, "bar") }
1' "$FileName" > file

如果不是 - 你怎么知道你何时到达函数定义的末尾?以上假设您知道在下一个函数定义开始时一个函数已经结束。

于 2013-10-10T03:06:23.783 回答