Estou procurando uma solução awk ou sed, mas também não sou um gênio. Li todas as sugestões que surgiram quando comecei a digitar isso.
Eu tenho um arquivo com linhas de dados:
name
thisdate=Sep 2 23:59:59 2022 GMT
name
thisdate=Sep 15 23:59:59 2022 GMT
Os nomes e datas/horas são todos diferentes, os números dos dias estão sempre no mesmo lugar e ocupam sempre o mesmo número de caracteres (2), as horas/min/seg estão sempre na mesma posição na linha e a sua nem todas as linhas thisdate
são sempre uma data no futuro e não há linhas em branco.
Estou tentando remover a hora dessas linhas de data tentando desligar thisdate=
(é um espaço na frente de thisdate
) e, em seguida, excluindo caracteres nas posições 18 a 26 (se contei corretamente)
Eu tentei algumas coisas, mas tenho procurado principalmente por algo que atenda às minhas necessidades para me indicar a direção certa
952 sed 's/^\(.\{18\}\)\(.\{26\}\)/\1/' file <--this may not have worked as I didn't key on a match?
958 sed -i 's/thisdate=(.{11})18/\26/' file
959 sed -i 's/thisdate=(.{10})17/\25/' file
Tenho certeza de que estou faltando alguma coisa, mas se alguém pudesse me indicar a direção certa, ficaria grato!
Responder1
Parece que deveria ser suficiente excluir apenas 9 caracteres após o 6º caractere após thisdate=
:
sed 's/^\( thisdate=.\{6\}\).\{9\}/\1/' file
Para os dados fornecidos, isso geraria
name
thisdate=Sep 2 2022 GMT
name
thisdate=Sep 15 2022 GMT