Eu tenho um arquivo com o seguinte conteúdo de exemplo:
NOF DOWN BITS = 96 data = Qua 3 de janeiro 04:37:32 2018:7E Qua 3 de janeiro 04:37:32 2018:7E Qua 3 de janeiro 04:37:32 2018:7E Quarta 3 de janeiro 04:37:32 2018: 7E Qua 3 de janeiro 04:37:32 2018:7E Qua 3 de janeiro 04:37:32 2018:7E Qua 3 de janeiro 04:37:32 2018:7E Qua 3 de janeiro 04:37:32 2018:7E Qua 3 de janeiro 04: 37:32 2018:7E Quarta, 3 de janeiro 04:37:32 2018:7E Quarta, 3 de janeiro 04:37:32 2018:7E Quarta, 3 de janeiro 04:37:32 2018:7E Quarta, 3 de janeiro 04:37:32 2018:
nof_received_data_packets
Eu gostaria de deletar a data e hora do arquivo. Ou seja, desejo remover todas as instâncias de "Wed Jan 3 XX:XX:XX 2018:". Portanto, possivelmente remova os n
caracteres após cada ocorrência de Wed
deve fazer.
Como eu faria isso com sed
?
Basta combinar o padrão:
Provavelmente existem maneiras mais sofisticadas de escrever isso, mas funciona.
Com awk :
Isso funciona definindo o separador de registro (RS) para um regex que corresponda a strings que se parecem com uma data e hora seguidas por um
:
, e definindo o separador de registro de saída (ORS) como vazio.Depois é só imprimir cada "registro".
Ele funciona com qualquer data e hora, assumindo apenas que nomes curtos de mês e nomes curtos de dia têm sempre três letras e que o formato de data sempre será
Day Month Daynum HH:MM:SS YYYY
.Com sed :
Isso usa o mesmo regex de correspondência de data para remover tudo o que se parece com uma data e hora seguida por um
:
.Com Perl :
As expressões regulares perl têm alguns atalhos interessantes para especificar caracteres de "palavra" (
\w
) e dígitos (\d
). A versão perl é compatível com unicode e deve funcionar em qualquer localidade.Todos os três são scripts de força bruta. Não acho que valha a pena tentar algo mais sofisticado do que isso, a menos que o formato da data provavelmente varie do acima. Se fosse esse o caso, eu provavelmente escreveria algo em perl para escanear substrings de cada linha usando o
Date::Parse
módulo.As versões
sed
eawk
requerem GNUsed
e GNUawk
, ou pelo menos versões deles que entendam{n,m}
as contagens de repetição de expressões regulares.