Eu preciso converter uma string de data do formulário: "07 de janeiro de 2016 12:12:12 EDT" (de um relatório do nessus) para um simples 2016-01-07. Eu tenho a lógica de correspondência resolvida em sed (e python e awk) e a lógica de conversão também resolvida (fora do sed) com o uso do comando date: date "Jan 07, 2016 12:12:12 EDT" +%Y-%m-%d
Estou usando grupos de correspondências para capturar o mês, o dia e o ano, para que possa consultá-los nas referências de volta. Não consigo encontrar a combinação correta de aspas para que o comando de dados reconheça os argumentos no RHS de uma correspondência sed, por exemplo:
sed -E "s/(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)(\s[0-9]{1,2}[,].[0-9]{1,4}.?[0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2}.\w{3})/'date -d "" "+%Y-%m-%d"'/g" 20170917.csv
Observe o uso de qualquer citação, resulta em data ignorando o primeiro argumento e imprimindo a data de hoje de acordo com o segundo argumento.
Eu tenho iterado usando "
, '
, \"
, \'
para cercar os backrefs \ 1 e \ 2, mas parece que assim que eles são colocados em back carrapatos, "para permitir o comando date a ser executado, eles são ignorados.
A entrada é csv do relatório Tenable Nessus.
head tmp / 20180121.csv
(1) "Plugin", "Nome do Plugin", "Família", "Severidade", "Endereço IP", "Protocolo", "Porta", "Exploit?", "Repositório", "Endereço MAC", "Nome DNS", "Nome NetBIOS", "Texto Plugin", "Primeiro Descoberto", "Último Observado", "Reduzido em", "Estruturas de Exploração"
(2) "73571", "Vulnerabilidades múltiplas no Oracle Java SE (CPU de abril de 2014) (Unix)", "Misc.", "Crítico", "10.140.162.132", "TCP", "0", " Sim "," Verificação individual "," 00: 50: 56: c0: 00: 01 "," host.example.com "," "," Saída de plug-in:
A seguinte instância vulnerável do Java é instalada no
host remoto:
Caminho: / opt / Geneious_linux64_7_1_9_with_jre /
Versão instalada: 1.7.0_51
Versão fixa: 1.5.0_65 / 1.6.0_75 / 1.7.0_55 / 1.8.0_5 "," 21 de janeiro de 2018 22:14:50 EST "," 21 de janeiro de 2018 22:14:50 EST "," "," "
Cada linha numerada é um registro - (1) é o cabeçalho e (2) é representativa do restante.
As strings de data a serem convertidas estão na última linha da linha 2. Preciso que seja simplesmente: 2018-01-21 em ambos os casos.