我有一个看起来像这样的函数:
myfunc("arg1", "arg2", "arg3" );
注意最后的额外空间。我试图用sed删除那个多余的空间。现在,我只是用echo
测试它,而不是在真实文件上进行测试。我的命令是
echo 'myfunc("arg1", "arg2", "arg3" );' | sed 's/myfunc\(.* \);/myfunc\(.*\);/g'
但是当我运行它时,它只是输出原始文本,没有任何变化(包括额外的空间)。
答案 0 :(得分:2)
你可以试试下面的sed命令,
$ echo 'myfunc("arg1", "arg2", "arg3" );' | sed 's/^\(.*\) /\1/g'
myfunc("arg1", "arg2", "arg3");
<强>解释强>
^\(.*\)
从起始到最后一个空格字符中捕获所有字符。(不包括最后一个空格字符)。 (我在模式中包含空格字符,但无法显示。)OR
$ echo 'myfunc("arg1", "arg2", "arg3" );' | sed -E 's/(myfunc\(.*[^ ]) +(\))/\1\2/g'
myfunc("arg1", "arg2", "arg3");
答案 1 :(得分:0)
这应该有效:
echo 'myfunc("arg1", "arg2", "arg3" );' | sed -e 's/[[:space:]]\{1,\})/)/'
它在右括号之前删除一个或多个空格。我不确定你使用的是什么版本的sed,但是它应该适用于任何一种。
输出:
myfunc("arg1", "arg2", "arg3");