使用 sed 在模式之间打印字符串

使用 sed 在模式之间打印字符串

我必须使用 提取以下函数调用的第一个参数sed

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

期望字符串的结果如下。

p->name
p->balance
p->number
p->address

答案1

我会用awk它而不是sed替代:

$ awk -F '[(,]' '{ print $2 }' file
p->name
p->balance
p->number
p->address

(它将每一行视为由或分隔的多个字段,,并打印第二个字段。

答案2

sed 's/[^(]*(\([^,]*\),.*/\1/' input.txt

输入

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

输出

p->name
p->balance
p->number
p->address

相关内容