Eu tenho um arquivo que contém muitas entradas conforme abaixo:
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)
Quero usar os comandos cut/sed/awk para inserir espaço após 5 caracteres ao contar reversamente como abaixo:
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)
Responder1
Na verdade, existem 6 caracteres: 2 dígitos, 1 barra, 2 dígitos, 1 parêntese:
sed 's/.\{6\}$/ &/' < input > output
Corresponde $
ao final da linha.
Responder2
Em expressões regulares, $
corresponde ao final da linha. Portanto, você pode usá-lo para corresponder aos últimos 6 caracteres (sua pergunta menciona 5, mas você mostra 6, a menos que haja um espaço à direita que você não está nos mostrando) e adicionar um espaço antes deles. Por exemplo:
Sed:
sed 's/......$/ &/' file
ou
sed 's/.\{6\}$/ &/' file
Sed GNU ou FreeBSD:
sed -E 's/.{6}$/ &/' file
Perl
perl -pe 's/.{6}$/ $&/' file
estranho
awk '{sub(/.{6}$/," &");print}' file