Eu tenho esta linha:
08:30:02.480507 IP 192.168.100.150.65119 > 192.168.100.151:53 59865 [1au] A? click.em.redbox.com. (48)
Preciso cortar o ".480507" no carimbo de data/hora para que a linha fique assim:
08:30:02 IP 192.168.100.150.65119 > 192.168.100.151.53: 59865 [1au] A? click.em.redbox.com. (48)
Eu me atrapalhei com várias instruções awk e cut, mas sem sucesso. Eu gostaria de encontrar um forro awk, mas sed pode ser uma solução melhor para isso. Eu simplesmente não sei o suficiente sobre nenhum deles quando se trata de cortar dessa maneira.
NOTA: Este é um exemplo, e a parte do carimbo de data/hora que preciso cortar não será a mesma, pois preciso executar esta ação em várias linhas, todas com carimbos de data/hora diferentes.
Responder1
Provavelmente awk
a maneira mais simples é fazer uma substituição de expressão regular no primeiro campo separado por espaços em branco, substituindo tudo, desde o ponto final até o final do campo:
awk '{sub(/\..*/,"",$1)}1' somefile
Responder2
eu usaria o awk
awk --posix '{ gsub(/\.[[:digit:]]{6}/, "", $1); print }' filename
Terá como alvo o primeiro campo (delimitado por espaço) e procurará por um arquivo . seguido por 6 números e esvazie-o.
Responder3
com GNUsed
sed -r 's/^([^.]+)\.[0-9]+ /\1 /' filename
^([^.]+)
captura a string inicial até o primeiro caractere de ponto\.[0-9]+
corresponder ao caractere de ponto seguido por mais de 1 caractere de dígito
e se o número de caracteres for consistente conforme fornecido no exemplo,
sed -r 's/^(.{8}).{7} /\1 /' filename