删除sed中两个特定单词之间的空格

时间:2016-03-15 18:39:00

标签: sed whitespace

输入是:

"At 12: 30 then"

我试过这个,但它不起作用:

echo "At 12: 30 then" | sed -e "/[0-9]\+:\(\s\+\)[0-9]\+/d"

预期输出为:

At 12:30 then

3 个答案:

答案 0 :(得分:2)

在那里,sed中的delete命令位于的上下文中,您可能需要替换。

echo "At 12: 30 then" | sed -e "s/\([0-9]\+\):\(\s\+\)\([0-9]\+\)/\1:\3/"

答案 1 :(得分:1)

我的主张:

echo "At 12: 30 then" | sed "s/\([0-9]\+\)\s*:\s*\([0-9]\+\)/\1:\2/"
echo "At 12 : 30 then" | sed "s/\([0-9]\+\)\s*:\s*\([0-9]\+\)/\1:\2/"

答案 2 :(得分:0)

使用-E(或GNU sed的-r)可以避免使用反斜杠转义林:

$ sed -E 's/([0-9]+:) *([0-9]+)/\1\2/' <<< 'At 12: 30 then'
At 12:30 then