Вставка пробела после 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
    

Связанный контент