O conteúdo do arquivo de entrada é como:
header;header;header;header
2018/06/04;141000;bla;bla
Saída Desejada:
header;header;header;header
2018/06/04;1410;bla;bla
Eu tenho o comando abaixo com sed
sed -i 's/.//16' $inputFile
Mas exclui meu cabeçalho como:
header;hder;header;header
2018/06/04;1410;bla;bla
Para evitar isso tentei fazer:
tail -n +2 | sed -i 's/.//16' $inputFile
Mas não está funcionando. desde já, obrigado
Usando
awk
:Isso modificaria o segundo
;
campo delimitado em cada linha de entrada, exceto na primeira, removendo os dois últimos caracteres dele.O trailing
1
faz com que todas as linhas sejam emitidas (pode ser substituída por{ print }
).Você redirecionaria a saída disso para um novo arquivo pelo qual mais tarde poderia substituir o original.
Se dois caracteres devem ser removidos antes do segundo delimitador (e supondo, como em seu exemplo, que sempre haja pelo menos dois caracteres antes de cada um dos dois primeiros delimitadores), use:
O
1!
evita alterar a linha de cabeçalho (primeira).O resto remove dois caracteres imediatamente antes do delimitador
;
.