从文件中删除最后一次出现的}

Cra*_*aig 1 bash awk sed

我正在尝试使用sed从文件中删除最后一次出现的}.到目前为止我有这个:

sed -i 's/\(.*\)}/\1/' file
Run Code Online (Sandbox Code Playgroud)

但这会删除与文件末尾一样多的}.所以如果我的文件看起来像这样:

foo
bar
}
}
}
Run Code Online (Sandbox Code Playgroud)

该命令将删除所有3个}字符.我怎样才能将其限制在最后一次?

Cra*_*aig 8

有人把我作为一个解决方案

sed -i '1h;1!H;$!d;g;s/\(.*\)}/\1/' file
Run Code Online (Sandbox Code Playgroud)

我只是不确定它和上面的awk解决方案一样好.