我有以下脚本:
script.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很新,我似乎不明白我做错了什么。
谢谢,
答案 0 :(得分: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
如果不是 - 你怎么知道何时到达函数定义的末尾?以上假设您知道在下一个函数定义开始时一个函数已经结束。