倒数时5个字符后插入空格

倒数时5个字符后插入空格

我有一个文件,其中包含许多条目,如下所示:

US6DWMD01#DW01DDATAPURGE(060009/28)
US6DWMD01#DW01DDATAPURGE(060009/29)
US6DWMD01#DW01DDATAPURGE(060009/30)
US6DWMD01#DW01DDATAPURGE(060011/01)
US6DWMD01#DW11WPURESUN(060011/01)
US6TPA01#PPAORD__LDBASE(000009/26)
US6TPA01#PPAORD__LGBOX(000009/26)
US6TPA01#PPATDD__DEDMGT(060009/25)
US6TPA01#PPATDD__FLNET(060009/25)
US6TPA01#PPATDD__LORTBLS(060009/25)
US6TPA01#PPATDD__PPATTBLS(060009/25)
US6TPA01#PPATDD__P8020RP(060011/01)

我想使用 cut/sed/awk 命令在反向计数时在 5 个字符后插入空格,如下所示:

US6TPA01#PPATDD__DEDMGT(0600 09/25)
US6TPA01#PPATDD__FLNET(0600 09/25)
US6TPA01#PPATDD__LORTBLS(0600 09/25)
US6TPA01#PPATDD__PPATTBLS(0600 09/25)
US6TPA01#PPATDD__P8020RP(0600 11/01)

答案1

实际上有 6 个字符:2 个数字、1 个斜杠、2 个数字、1 个括号:

sed 's/.\{6\}$/ &/' < input > output

匹配$行尾。

答案2

在正则表达式中,$匹配行尾。因此,您可以使用它来匹配最后 6 个(您的问题提到 5 个,但您显示 6 个,除非您没有向我们显示尾随空格)字符,并在它们之前添加一个空格。例如:

  • 塞德:

    sed 's/......$/ &/' file
    

    或者

    sed 's/.\{6\}$/ &/' file
    
  • GNU 或 FreeBSD sed:

    sed -E 's/.{6}$/ &/' file
    
  • 珀尔

    perl -pe 's/.{6}$/ $&/' file
    
  • awk

    awk '{sub(/.{6}$/," &");print}' file
    

相关内容