逆順に数えるときに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
    

関連情報