Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 仅删除文件中数字之间的多个空格_Linux_Unix_Awk_Sed - Fatal编程技术网

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