msoliver
(usa Debian)
Enviado em 22/09/2020 - 20:01h
carolinaq escreveu:
Olá.
Eu tenho vários arquivos com 7 colunas de dados e milhares de linhas.
Na segunda coluna, os valores variam de 0 a 2350, com um intervalo de 10.
Na sétima coluna (última), os valores variam de 2000 a 15000, com 1000 de intervalo.
Então, quando o valor na segunda coluna for 0, eu gostaria de substituir para 0000.
Quando o valor estiver entre 10 e 50, substituir para 0010, 0020, 0030, 0040 e 0050, respectivamente,
e, quando o valor estiver entre 110 e 950, substituir por 0110, por exemplo.
Isto é, gostaria de deixar essa segunda coluna no formato de hora e minuto, sem os dois pontos ( : ).
E no caso da última coluna, quando o valor tiver somente 4 dígitos, preciso acrescentar um 0 a esquerda.
Alguém pode me ajudar a fazer isto?
Utilize o printf.
Exemplo:
printf "%04d\n" 10
"Printa" o número com 4 dígitos
Pelo que entendi,
2º campo com 4 dígitos e 7º campo com 5 dígitos.....
Resolução:
Supondo que o "IFS" é ; (ponto e virgula), caso seja outro, só trocar na linha abaixo....
awk -F";" '{printf "%s;%04d;%s;%s;%s;%s;%05d\n" ,$1,$2,$3,$4,$5,$6,$7}' arquivo
Obs.:
Atente-se que:
Colocando "0" a esquerda, terá problemas no "bash".
Ex:
echo $((08/2))
bash: 08: valor muito grande para esta base de numeração (token de erro é "08")
printf "%02d\n" '08'
bash: printf: 08: número octal inválido
00
Nada que não tenha solução.....
printf "%02d\n" "$((10#08))" #"Avise o bash" que a base é decimal......
______________________________________________________________________
Importante: echo -e "\n$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')\n"
Att.: Marcelo Oliver
______________________________________________________________________