输入文件:
101|989881|Customer contact 123 456 7777|AXD
102|989882|Declined sales. Details 122 -333 - 1234 contact|XYZ
输出文件:
101|9881|Customer contact 1234567777|AXD
102|9882|Declined sales. Details
122-333-1234 contact|XYZ
尝试:
sed 's/\([0-9]\) \([0-9]\)/\1\2/g' inputfile
此命令仅在数字之间存在一个空格且不满足其他条件时才会删除。
任何人都可以帮忙解决这个问题。
答案 0 :(得分:3)
你快到了!以下是您想要的...它删除多个连续的空格,并且一直持续到您没有更多匹配(t命令的目的)...这将处理匹配'0 - 0'的情况 - 没有在t语句中,第二个匹配' - 0'将不会被处理,因为' - '在上一个匹配中。
sed ':x; s/\([0-9-]\) \+\([0-9-]\)/\1\2/g; tx' inputfile
有一个潜在的弱点......那就是当你遇到' - - '时你可能不想删除空格。这需要更多的工作:
sed ':x; s/\([0-9]\) \+\([0-9-]\)/\1\2/g; tx; :y; s/\([0-9-]\) \+\([0-9]\)/\1\2/g; ty;' inputfile