不止一次更换句子

时间:2013-03-26 02:26:09

标签: bash scripting sed

我正在编写一个bash脚本来生成CPP源文件。 我有一个变量列表及其名称,如:

   TH1F z_E;
   TH1F z_eta;

我想转过这样的话:

   TH1F * z_E = (TH1F *)f->Get("z_E");
   TH2F * z_eta = (TH2F *)f->Get("z_eta");

我试图用sed来做,但我找不到使用匹配字符串的方法来写结果。

PS:我的sed版本是4.1.5

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

这样的事情:

sed 's/\([A-Za-z_][A-Za-z0-9_]*\) *\([A-Za-z_][A-Za-z0-9_]*\);/\1 \2 = (\1 *)someOtherVar->Get("\2");/' input

答案 1 :(得分:0)

最终解决方案(解决@perreal回答的小问题)是:

sed 's/\([A-Za-z_][A-Za-z0-9_]*\)[ \t]*\([A-Za-z_][A-Za-z0-9_]*\);/\1 \2 = (\1 *)f->Get("\2");/' input