1 bash shell-script text-processing
输入:
int foo(int a, void * b, int c);
Run Code Online (Sandbox Code Playgroud)
输出:
int foo(int, void *, int);
Run Code Online (Sandbox Code Playgroud)
想用“,”作为匹配模式。如果 "," 模式匹配,则删除前一个单词 ie a
, b
& c
。
你可以使用前瞻(有时称为零长度断言,如果正则表达式引擎使用的是它如用perl支持,配合和当且仅当随后删除的文字字符的任何非零序列),
perl -pe 's/\w+(?=,)//g'
Run Code Online (Sandbox Code Playgroud)
如果您想在断言中包含其他字符 - 例如)
在int c
您可以将其添加为[...]
字符列表的一部分之后的终止右括号
perl -pe 's/\w+(?=[,)])//g'
Run Code Online (Sandbox Code Playgroud)
如果您还想删除任何前导空格,请尝试
perl -pe 's/\s*\w+(?=[,)])//g'
Run Code Online (Sandbox Code Playgroud)
把它们放在一起,我们得到
$ echo 'int foo(int a, void * b, int c);' | perl -pe 's/\s*\w+(?=[,)])//g'
int foo(int, void *, int);
Run Code Online (Sandbox Code Playgroud)
与较新版本的 sed 一样,可以通过添加-i
命令行开关使 perl 对文件进行“就地”操作。