倒數時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
    

相關內容