使用sed删除额外空格
我有一个函数如下所示:使用sed删除额外空格,sed,Sed,我有一个函数如下所示: myfunc("arg1", "arg2", "arg3" ); 请注意末尾的额外空间。我正试图用sed删除多余的空间。现在,我只是用echo测试它,而不是在真实的文件上进行测试。我的命令是 echo 'myfunc("arg1", "arg2", "arg3" );' | sed 's/myfunc\(.* \);/myfunc\(.*\);/g' 但是当我运行它时,它只输出原始文本,没有任何更改(包括额外的空间)。您可以尝试下面的sed命令 $ echo 'myf
myfunc("arg1", "arg2", "arg3" );
请注意末尾的额外空间。我正试图用sed删除多余的空间。现在,我只是用echo
测试它,而不是在真实的文件上进行测试。我的命令是
echo 'myfunc("arg1", "arg2", "arg3" );' | sed 's/myfunc\(.* \);/myfunc\(.*\);/g'
但是当我运行它时,它只输出原始文本,没有任何更改(包括额外的空间)。您可以尝试下面的sed命令
$ echo 'myfunc("arg1", "arg2", "arg3" );' | sed 's/^\(.*\) /\1/g'
myfunc("arg1", "arg2", "arg3");
说明:
捕获从起始到最后一个空格字符的所有字符。(不包括最后一个空格字符)。(我在图案中包含空格字符,但未能显示。)^\(.*)
- 在替换部分中,所有匹配的字符被第一个捕获组中的字符替换
echo 'myfunc("arg1", "arg2", "arg3" );' | sed -e 's/[[:space:]]\{1,\})/)/'
它在右括号前删除一个或多个空格。我不确定您使用的是哪个版本的sed,但这应该适用于任何一个版本
输出:
myfunc("arg1", "arg2", "arg3");
你能解释一下这是怎么得到空间的吗?这是可行的,但我不知道怎么做。看起来好像没有寻找任何额外的空格,因为右括号跟在星号后面。这段代码删除给定行中的最后一个空格,不管它在哪里,对吗?例如
fun(“a”、“b”、“c”)
->fun(“a”、“b”、“c”)
和fun(“a”、“b”、“c”)代码>->乐趣(“a”、“b”、“c”)代码>@Kent我是根据op的输入发布的。谢谢你更新你的描述-我开始理解这一点了。我对你的答案进行了一点编辑,以使用扩展的REs,并使其能够捕获所有额外的空格,并且仅限于括号中的部分。您可以将其添加到您的答案中:echo'myfunc(“arg1”、“arg2”、“arg3”);|sed-E的/(.*[^])+(.*/\1\2/g'
Oops-一个小改动,使它在更一般的设置中工作:sed-E的/(myfunc\(.[^])+(\)/\1\2/g'
,这样它实际上可以在文件上使用。否则,它会拾取所有类型的空格并尝试删除它们。再次感谢你的帮助。
myfunc("arg1", "arg2", "arg3");