sed字符串搜索并添加参数

时间:2017-09-19 17:43:37

标签: sed

我有一个C程序在100行中调用strlcpy函数。

strlcpy(p->name,getInfo(NULL,&account)); 
strlcpy(p->balance,getInfo(NULL,&account));
strlcpy(p->number,getInfo(NULL,&account)); 
strlcpy(p->address,getInfo(NULL,&account));

我想使用sizeof([First Parameter])sed作为第三个​​参数添加到strlcpy函数调用中。只应编辑带有strlcpy的行。

期望结果为

strlcpy(p->name,getInfo(NULL,&account),sizeof(p->name)); 
strlcpy(p->balance,getInfo(NULL,&account),sizeof(p->balance));
strlcpy(p->number,getInfo(NULL,&account),sizeof(p->number)); 
strlcpy(p->address,getInfo(NULL,&account),sizeof(p->address))

感谢任何想法/代码。

1 个答案:

答案 0 :(得分:1)

sed 解决方案:

sed -E 's/^([^(]+)(\([^,]+),([^)]+\)).*/\1\2,\3,sizeof\2));/' file

输出:

strlcpy(p->name,getInfo(NULL,&account),sizeof(p->name));
strlcpy(p->balance,getInfo(NULL,&account),sizeof(p->balance));
strlcpy(p->number,getInfo(NULL,&account),sizeof(p->number));
strlcpy(p->address,getInfo(NULL,&account),sizeof(p->address));

BRE 等价物:

sed 's/^\([^(]*\)\(([^,]*\),\([^)]*)\).*/\1\2,\3,sizeof\2));/' file