GNU sed从文本文件中的数字编号中删除空格

时间:2013-04-26 07:01:03

标签: regex sed

我有以下虚假数据:

Dominik Dryja|4111 2386 0873 0189|0315
Laivonen Eero|5111 0620 0750 8041|0813
Jukka Valimaa|5111 6500 0489 0035|0415
Rafael Diaz de Leon|4111 3036 6209 4796|0516
Mr Jonathan Bird|4111 6150 0291 7415|0215
ERRANTE VINCENZO|4222 6111 0038 6639|0114
YOSHIO MOTOKI|5222 3200 0374 7129|0513
I. A. VLACHOGIANNIS|4333 0115 6936 2003|0315
Soumya Kanti Deb|4333 0590 0165 4877|1019
WU KE ZHAN|5444 8213 7236 0431|0716

我尝试仅从数字中删除空格,如下所示:

Dominik Dryja|4111238608730189|0315
Laivonen Eero|5111062007508041|0813
Jukka Valimaa|5111650004890035|0415
Rafael Diaz de Leon|4111303662094796|0516
Mr Jonathan Bird|4111615002917415|0215
ERRANTE VINCENZO|4222611100386639|0114
YOSHIO MOTOKI|5222320003747129|0513
I. A. VLACHOGIANNIS|4333011569362003|0315
Soumya Kanti Deb|4333059001654877|1019
WU KE ZHAN|5444821372360431|0716

尝试sed -r '#|([0-9]{4})\ ([0-9]{4})\ ([0-9]{4})\ ([0-9]{4})|#\1\2\3\4#g' 出于某种原因没有成功。知道我哪里弄错了吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

假设数字之间总是有一个空格:

sed 's/\([0-9]\) \([0-9]\)/\1\2/g'

适用于您的示例。 代码很简单 - 如果它们出现在两个数字之间,则删除所有单个空格。

答案 1 :(得分:1)

您可以简化您的sed:

sed 's/\([0-9]\{4\}\) /\1/g' inFile