Linux 仅删除文件中数字之间的多个空格
输入文件:Linux 仅删除文件中数字之间的多个空格,linux,unix,awk,sed,Linux,Unix,Awk,Sed,输入文件: 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
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
仅当数字之间存在一个空格且不满足其他条件时,此命令才会删除
谁能帮我一下吗。你就快到了!以下内容符合您的要求。。。它删除多个连续的空格,并继续执行,直到没有更多的匹配项为止(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
你就快到了!以下内容符合您的要求。。。它删除多个连续的空格,并继续执行,直到没有更多的匹配项为止(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