我正在编写一个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
有什么想法吗?
答案 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