我有一个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))
感谢任何想法/代码。
答案 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